https的免費申請流程
這篇文章包含3個主要內容:
- 如何用nodejs創建https服務器;
- 如何免費申請到ssl證書;
- nginx如何設置https服務器。 </ul>
如果想了解https原理部分,可以查看之前的文章介紹htts原理
1、用Nodejs創建HTTPS服務器
在Nodejs中,我們可以通過內置的https庫,來實現HTTPS服務器。
Nodejs的HTTPS使用文檔:http://nodejs.org/api/https.html
~ cd /home/conan/nodejs ~ sudo npm install
用openssl生成證書文件
~ openssl version -a OpenSSL 1.0.1 14 Mar 2012 built on: Tue Jun 4 07:26:06 UTC 2013 platform: debian-amd64 options: bn(64,64) rc4(16x,int) des(idx,cisc,16,int) blowfish(idx) compiler: cc -fPIC -DOPENSSL_PIC -DZLIB -DOPENSSL_THREADS -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -m64 -DL_ENDIAN -DTERMIO -g -O2 -fstack-protector --param=ssp-buffer-size=4 -Wformat -Wformat-security -Werror=format-security -D_FORTIFY_SOURCE=2 -Wl,-Bsymbolic-functions -Wl,-z,relro -Wa,--noexecstack -Wall -DOPENSSL_NO_TLS1_2_CLIENT -DOPENSSL_MAX_TLS1_2_CIPHER_LENGTH=50 -DMD32_REG_T=int -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DWHIRLPOOL_ASM -DGHASH_ASM OPENSSLDIR: "/usr/lib/ssl" ~ openssl genrsa -out privatekey.pem 1024 ~ openssl req -new -key privatekey.pem -out certrequest.csr ~ openssl x509 -req -in certrequest.csr -signkey privatekey.pem -out certificate.pem
修改文件app.js
~ vi app.js //在最下面 var https = require('https') ,fs = require("fs"); var options = { key: fs.readFileSync('./privatekey.pem'), cert: fs.readFileSync('./certificate.pem') };https.createServer(options, app).listen(3011, function () { console.log('Https server listening on port ' + 3011); });</pre>
啟動服務器
~ node app.jsExpress server listening on port 3000 Https server listening on port 3011 </pre>
![]()
2、申請免費的SSL證書
HTTPS和HTTP的區別
https協議需要到ca申請證書,一般免費證書很少,需要交費。 http是超文本傳輸協議,信息是明文傳輸,https 則是具有安全性的ssl加密傳輸協議。 http和https使用的是完全不同的連接方式,用的端口也不一樣,前者是80,后者是443。 http的連接很簡單,是無狀態的;HTTPS協議是由SSL+HTTP協議構建的可進行加密傳輸、身份認證的網絡協議,比http協議安全。
目前網上也有一些免費的證書,可以申請的到,下面是通過startssl申請免費一年ssl證書,對于理解整個過程還是很有幫助的。
StartSSL( 網址:http://www.startssl.com,公司名:StartCom )也是一家CA機構,它的根證書很 久之前就被一些具有開源背景的瀏覽器支持(Firefox瀏覽器、谷歌Chrome瀏覽器、蘋果Safari瀏覽器等)。
1、打開http://www.startssl.com/
2、點擊StartSSL Free(Class 1)
![]()
3、點擊Certificate Control Panel進入控制面板,或直接訪問http://www.startssl.com/?app=12也可以。
4、點擊sign-up注冊一個帳號
![]()
5、填寫注冊信息,要用英文格式填寫
![]()
6、信息填寫完成后,會給注冊的郵箱發送一封電子郵件,此時不要關閉startssl的這個頁面,檢查郵箱輸入驗證碼
![]()
7、等待StartComm人工審核注冊的個人信息,如果審核成功會收到第二個郵件
例如:
StartSSL Account RequestTo XXXX, Your request for an account at StartSSL (www.startssl.com) has been approved and is available during the next 24 hours at the following location: https://www.startssl.com/?app=12&action=release&id=XXXXXX&auth=XXXXXXXXXXXXXXXX The verification code in order to continue the process is XXXXXXXXXXXXXXXX Thank you!</pre>
startssl審批很快,稍等會兒就能收到郵件。訪問郵件中的鏈接地址,再次輸入驗證碼。
8、建立私鑰
選擇高級,點擊continue。9、安裝證書
![]()
10、安裝完成
安裝完成后,會有一個提示框:
![]()
頁面會提示:
Your first client certificate has been installed into your browser. This is a bootstrapping certificate for authentication purpose. Backup this certificate to an external media, otherwise you might not be able to regain access to your account. Please read these instructions from our FAQ page on how to do that.點擊頁面上的Finish。
11、隨后頁面會跳到F.A.Q.頁面
點擊How do I backup my client certificates?看下如何備份證書
firefox:工具-選項-高級-查看證書-您的證書,下面就有需要備份的證書。以后登錄startssl要憑瀏覽器上前面安裝的證書登錄。丟失證書后只能重新注冊。以后要登錄,點擊Authenticate憑證書登錄:
![]()
12、開始申請免費ssl證書
回到startssl的控制面板,我們看到有三個選項卡:
![]()
大致流程如下:
1)先到Validations Wizard驗證域名的所有權
2)再到Certificates Wizard選擇要申請證書的類型
3)再到Tool Box選項卡,使用里面的小工具生成證書13、點擊Validations Wizard
選擇Domain name validation,點擊Continue。
![]()
輸入要申請的域名,點擊Continue。
![]()
選擇一個驗證的郵箱,有postmaster@域名、hostmaster@域名、webmaster@域名、和注冊域名時的郵箱。
![]()
檢查郵箱,輸入驗證碼:
![]()
驗證成功:
域名驗證成功,這次驗證在30天內有效,過期了要重新驗證。點擊Finish回到控制面板。14、點擊Certificates Wizard
選擇WEB Server SSL/TSL Certifites:
![]()
生成私鑰,為私鑰提供一個密碼,最少10位,最大32位:
![]()
將顯示內容保存為ssl.key(這個私鑰是加密的):
![]()
選擇域名:
![]()
輸入一個需要ssl證書的子域名:
![]()
然后確認前面用于申請證書的域名。
最后會提示:
Additional Check Required!You successfully finished the process for your certificate. However your certificate request has been marked for approval by our personnel. Please wait for a mail notification from us within the next 3 hours (the most). We might contact you for further questions or issue the certificate within that time. Thank you for your understanding!</pre>
隨后就等郵件通知。
15、收到郵件后點擊Tool Box
使用Tool Box - Decrypt Private Key,將前面生成的ssl.key的內容解密。將結果保存為.key文件。比如ssl2.key。
保存證書:
Tool Box - Retrieve Certificate,選擇申請證書的域名,將框中的內容保存為.crt文件。比如ssl.crt。這個就是證書文件啦。
![]()
3、nginx配置ssh證書
在nginx.conf文件里修改配置位置:
server { listen 443; server_name localhost; ssl on; ssl_certificate ssl/ssl2.crt; ssl_certificate_key ssl/ssl2.key; }https默認是監聽443端口的。
nginx -s reload下如果沒有任何提示,就說明配置成功了。如果我們需要將原先的http的鏈接自動跳轉到https,可以增加如下配置。
server { listen 80; server_name coollist.cn; rewrite ^/(.*) https://$server_name/$1 permanent; #跳轉到Https }參考:
來自:
http://www.startssl.com/
http://blog.fens.me/nodejs-https-server/
http://www.live-in.org/archives/1296.html
http://blog.sina.com.cn/s/blog_61b0aafd0100wz9z.html