網上有不少廉價甚至免費的 SSL 證書服務商,而比較方便快捷的應該是通過 namecheap.com 購買 Comodo Positive SSL 和 RapidSSL,兩者都是 $10 左右一年,一般在 10 來分鐘之內就能完成。
下面是購買的詳細步驟:
1、首先確定你 Web Server 的類型
一般來說,除了 Java Tomcat Web Server 之外的其他 Web Server(比如 Apache Httpd)都是使用 OpenSSL 實現其加密層的,所以在購買證書時先選定你的 Web Server 加密程序為 OpenSSL。(注:Tomcat 結合 APR 使用的話也是用 OpenSSL 的哦,如果你需要為 Tomcat 購買 SSL 證書,則轉到本文第一段提到的那篇舊文。)
2、生成私鑰和簽名請求文件
使用如下命令可以產生一個私鑰以及一個簽名請求文件
- $ openssl req -nodes -newkey rsa:2048 -keyout my.key -out my-request.csr
這條命令的 rsa:2048 用于指定加密算法的名稱以及密鑰的長度,最終生成的 my.key 為私鑰(要保管好)和一個簽名請求文件。
運行這個命令時會詢問關你的網站的信息,如果是個人網站,那么大部分資料都是可以隨便填的,只要 “Common Name” 這一項準確填寫你的域名即可,比如 abc.com,xyz.org,注意不用加 www 前綴,namecheap 代理銷售的 SSL 證書會自動額外簽名你的 www 二級域名,即付一份價錢,可以同時認證 abc.com 和 www.abc.com。
3、檢查一下你域名登記的 email 地址
因為證書服務商會驗證你的域名,而驗證方法則是發送一封 email 到你域名注冊時所填寫的聯系 email 地址,如果你注冊域名時是亂填的,記得現在要更正過來了。
4、把簽名請求文件發送給證書服務商
根據購買流程當中的指引,把第 2 步產生的 my-request.csr 發送給證書服務商。大概等十幾分鐘(也有時要幾個小時)服務商會發送一封 email 給你,一般來說里面包含一個驗證碼,把這個驗證碼輸入購買流程的頁面當中就完成域名驗證了。
5、獲取簽名證書
上一步完成之后,大概再等幾分鐘,你就會收到一封郵件(或者出現在購買流程當中),里面包含有你的證書和證書鏈。具體來說可能會有這 3 個證書文件:
yourDomainName.crt
PositiveSSLCA2.crt
AddTrustExternalCARoot.crt
一般來說我們要把后兩者合并為一個文件,用記事本打開然后復制粘貼形成一個新文件即可,需要注意 *Root.crt 這個文件的內容要放在最后,對于 linux 系統用戶,用這行搞定:
- $ cat PositiveSSLCA2.crt AddTrustExternalCARoot.crt > yourDomainName.ca-bundle.crt
6、使用證書
這里以 Apache Httpd 為例,一般的設置如下:
- SSLEngine on
- SSLCertificateKeyFile /etc/ssl/ssl.key/my.key
- SSLCertificateFile /etc/ssl/ssl.crt/yourDomainName.crt
- SSLCertificateChainFile /etc/ssl/ssl.crt/yourDomainName.ca-bundle
如果你的 apache 配置了多個虛擬主機,則配置如下:
- # make sure add these lines in somewhere else
- #NameVirtualHost *:80
- #NameVirtualHost *:443
- <VirtualHost *:80>
- ServerName www.your-domain.com
- documentRoot /var/www/your-domain
- ServerAlias your-domain.com
- <VirtualHost>
- <VirtualHost *:443>
- SSLEngine on
- SSLCertificateKeyFile /etc/ssl/ssl.key/my.key
- SSLCertificateFile /etc/ssl/ssl.crt/yourDomainName.crt
- SSLCertificateChainFile /etc/ssl/ssl.crt/yourDomainName.ca-bundle
- ServerName www.your-domain.com
- documentRoot /var/www/your-domain
- ServerName your-domain.com
- <VirtualHost>
對于使用了 APR 的 Tomcat 服務器,配置如下:
- <Connector port="443" protocol="HTTP/1.1"
- address="198.74.59.36"
- SSLEnabled="true"
- scheme="https" secure="true"
- enableLookups="false"
- SSLCertificateFile="/etc/ssl/my/yourDomainName.crt"
- SSLCertificateChainFile="/etc/ssl/my/yourDomainName.ca-bundle.crt"
- SSLCertificateKeyFile="/etc/ssl/my/my.key"/>
證書設置完畢。
7、補:SSL 證書的格式轉換
如果你已經根據上面的流程購買了一個 SSL 證書,而碰巧使用的時候要求是 Java Keystore 格式,那么需要將 OpenSSL 的證書轉換一下:
首先將密鑰和證書轉為 pkcs12 格式:
- $ openssl pkcs12 -export -in yourDomainName.crt -inkey my.key > my.p12
然后將 pkcs12 格式轉換為 Java keystore 格式:
- $ keytool -importkeystore -srckeystore my.p12 -destkeystore my.jks -srcstoretype pkcs12
延伸閱讀:
- CloudFlare SSL和Wosign沃通SSL申請開通和安裝使用
- WoSign沃通SSL證書免費申請及賬戶設置教程
- Startssl SSL 證書申請圖解
- 在Nginx上配置NameCheap免費SSL