摘自 http://blog.mowd.tw/index.php?pl=950
前一陣子朋友介紹了 StartSSL 這個可以全球唯一可以申請免費 SSL 證書的網站
申請後的 SSL 證書有效期限為一年
經過一番測試之後,Mowd 終於申請成功並且安裝到 Apache
現在就可以透過 https://ssl.mowd.tw 來瀏覽經過 https 加密的網誌囉
StartSSL 註冊過程如下:
1. 使用 IE 連到 http://www.startssl.com,點選右上角鑰匙圖案進入註冊頁
Mowd 之前要用 Chrome 註冊時,StartSSL 提示因為憑證匯入問題,不建議使用 Chrome ,於是 Mowd 是用 IE 註冊的
2. 點選 Sign-up 按鈕進行註冊
3. 接下來會看到一份註冊表格,填寫的資料必須正確
因為申請後 StartSSL 會進行審核,如果隨便寫寫就不會過了
送出表單後要等一下才會收到確認信,Mowd 大概十分鐘內就收到了
確認信中包含一串驗證碼,將驗證碼貼入表格終究可以完成驗證
4. 完成驗證後會要求你輸入登入 StartSSL 的憑證密碼,並且自動將登入憑證安裝到 IE 瀏覽器
日後如果要匯出登入憑證到其他電腦的話
可以到 IE 的「網際網路選項 --> 內容 --> 憑證」的個人分頁匯出
Mowd 之前要用 Chrome 註冊時,StartSSL 提示因為憑證匯入問題,不建議使用 Chrome ,於是 Mowd 是用 IE 註冊的
2. 點選 Sign-up 按鈕進行註冊
3. 接下來會看到一份註冊表格,填寫的資料必須正確
因為申請後 StartSSL 會進行審核,如果隨便寫寫就不會過了
送出表單後要等一下才會收到確認信,Mowd 大概十分鐘內就收到了
確認信中包含一串驗證碼,將驗證碼貼入表格終究可以完成驗證
4. 完成驗證後會要求你輸入登入 StartSSL 的憑證密碼,並且自動將登入憑證安裝到 IE 瀏覽器
日後如果要匯出登入憑證到其他電腦的話
可以到 IE 的「網際網路選項 --> 內容 --> 憑證」的個人分頁匯出
註冊完成之後,再來是申請 SSL 憑證
StartSSL 的免費帳戶可以申請 Class1 憑證
每一個憑證可以擁有一個主網域跟一個子網域
如果需要多個子網域的話,憑證可以分開申請,憑證數量一樣沒有限制
申請步驟如下:
1. 登入 StartSSL 後會進入 Control Panel 介面
首先必須要驗證你是網域的管理者
所以先點選 Validations Wizard
驗證方式選擇 Domain Name Validation
2. 接下來輸入主網域名稱,不要包含子網域
3. StartSSL 會根據網域註冊資料,發送驗證碼到你註冊網域的 E-mail
把驗證碼輸入表單送出後就完成網域驗證了
首先必須要驗證你是網域的管理者
所以先點選 Validations Wizard
驗證方式選擇 Domain Name Validation
2. 接下來輸入主網域名稱,不要包含子網域
3. StartSSL 會根據網域註冊資料,發送驗證碼到你註冊網域的 E-mail
把驗證碼輸入表單送出後就完成網域驗證了
完成網域驗證後,接下來就是申請 SSL 證書了
1. 首先點選 Certificates Wizard 進行申請流程
選擇 Web Server SSL/TLS Certificate
2. 接下來要產生私鑰,先輸入一個大於 10 位數的密碼
密碼只能包含英文和數字
至於 Keysize,Mowd 是選 4096 位元
3. 下一個頁面就是剛剛我們產生的私鑰內容
這個私鑰文件是經過加密的,稍後我們要將他解密
把文字方塊內容儲存下來,並命名為 ssl.key
4. 接下來選擇我們要產生 SSL 證書的主網域以及子網域
5. 最後文字方塊裡面的就是 SSL 證書
將文字方塊裡面的文字儲存起來,檔名為 ssl.crt
另外記得要下載 intermediate 和 root CA 證書
如果缺少這兩個,Firefox 會出現「sec_error_unknown_issuer」
並且出現警告頁面告訴你不要信任 StartSSL 的 SSL 證書
http://www.startssl.com/certs/sub.class1.server.ca.pem
http://www.startssl.com/certs/ca.pem
選擇 Web Server SSL/TLS Certificate
2. 接下來要產生私鑰,先輸入一個大於 10 位數的密碼
密碼只能包含英文和數字
至於 Keysize,Mowd 是選 4096 位元
3. 下一個頁面就是剛剛我們產生的私鑰內容
這個私鑰文件是經過加密的,稍後我們要將他解密
把文字方塊內容儲存下來,並命名為 ssl.key
4. 接下來選擇我們要產生 SSL 證書的主網域以及子網域
5. 最後文字方塊裡面的就是 SSL 證書
將文字方塊裡面的文字儲存起來,檔名為 ssl.crt
另外記得要下載 intermediate 和 root CA 證書
如果缺少這兩個,Firefox 會出現「sec_error_unknown_issuer」
並且出現警告頁面告訴你不要信任 StartSSL 的 SSL 證書
http://www.startssl.com/certs/sub.class1.server.ca.pem
http://www.startssl.com/certs/ca.pem
以上步驟我們可以得到私鑰 ssl.key 以及 SSL 證書 ssl.crt
接下來我們要在 Apache 啟用 SSL
Mowd 是使用 CentOS 5.5
所以接下來 Mowd 都以 CentOS 5.5 的環境來介紹
1. 首先檢查 Apache 有沒有安裝 mod_ssl
可以透過 yum install mod_ssl 來安裝
2. 接下來將 ssl.key 上傳到 /etc/pki/tls/private/
將 ssl.crt 上傳到 /etc/pki/tls/certs/
將 sub.class1.server.ca.pem 以及 ca.pem 上傳到 /etc/pki/tls/
3. 前面提到我們取得的私鑰 ssl.key 是加密過後的
如果沒有解密的話,每次 Apache 啟動後都要輸入密碼
解密步驟如下:
4. 再來打開 /etc/httpd/conf.d/ssl.conf
將 ssl.conf 內各項憑證的路徑及檔案修改如下
5. 儲存後重新載入 Apache,SSL 就生效囉
SSL 測試網頁:https://ssl.mowd.tw
可以透過 yum install mod_ssl 來安裝
2. 接下來將 ssl.key 上傳到 /etc/pki/tls/private/
將 ssl.crt 上傳到 /etc/pki/tls/certs/
將 sub.class1.server.ca.pem 以及 ca.pem 上傳到 /etc/pki/tls/
3. 前面提到我們取得的私鑰 ssl.key 是加密過後的
如果沒有解密的話,每次 Apache 啟動後都要輸入密碼
解密步驟如下:
#cd /etc/pki/tls/private/
#openssl rsa -in ssl.key -out ssl.key
接下來會提示你輸入私鑰密碼,輸入完就解密囉#openssl rsa -in ssl.key -out ssl.key
4. 再來打開 /etc/httpd/conf.d/ssl.conf
將 ssl.conf 內各項憑證的路徑及檔案修改如下
SSLCertificateFile /etc/pki/tls/certs/ssl.crt
SSLCertificateKeyFile /etc/pki/tls/private/ssl.key
SSLCertificateChainFile /etc/pki/tls/sub.class1.server.ca.pem
SSLCACertificateFile /etc/pki/tls/ca.pem
SSLCertificateKeyFile /etc/pki/tls/private/ssl.key
SSLCertificateChainFile /etc/pki/tls/sub.class1.server.ca.pem
SSLCACertificateFile /etc/pki/tls/ca.pem
5. 儲存後重新載入 Apache,SSL 就生效囉
SSL 測試網頁:https://ssl.mowd.tw
Firefox不信任StartSSL证书问题解决
8/22/2012
StartSSL证书的支持率一直是一个很大的问题,今天在Apache中安装完StartSSL证书之后遇到了以下情况:
- Firefox提示“此连接是不受信任的”,同时Opera则在地址栏左侧状态中提示“服务器试图应用安全措施,但没有成功”;
- 桌面版本Chrome显示已经加密,但iOS版Chrome则提示“此网站尚未经过身份验证。”;
- Win7下IE9和iOS版本Safari都显示已经加密。
理论上讲,StartSSL支持除了Opera外所有的主流浏览器,因此Firefox遇到的不受信任的连接是不正常情况。
经过查看官网文档和Google后找到了问题的原因:Firefox仅包含了StartCom的根证书,而中间证书需要服务器提供,一般网上的Howto都不会提及这一点,所以会出现类似问题。
以下解决方法基于Jason Weathered的文章《A free SSL certificate for your web server》改进(之前Kaijia是根据《Setting up SSL: Ubuntu and Apache 2》架设的SSL,其中证书和Key文件都放在/etc/apache2/ssl/文件夹中,此例中假定你将域名的.crt和.key文件也放在/etc/apache2/ssl/中):
首先你需要在StartSSL的控制板的Tool Box->StartCom CA Certificates中下载StartCom CA证书,需要下载StartCom Root CA (PEM encoded)、你的证书等级对应的CA证书(免费的Class 1证书下载Class 1 Intermediate Server CA)。下载完成后将这两个pem文件复制到服务器的/etc/apache2/ssl/文件夹中。
在命令行下运行以下命令:
1
2
3
4
| cd /etc/apache2/ssl mv ca.pem startssl.ca.crt mv sub.class1.server.ca.pem startssl.sub.class1.server.ca.crt cat startssl.sub.class1.server.ca.crt startssl.ca.crt > startssl.chain.class1.server.crt |
然后修改原来SSL部分的Apache设置,Kaijia虚拟域名的原有设置为:
1
2
3
4
5
6
7
| < VirtualHost *:443> DocumentRoot /var/www/yourdomain.com ServerName yourdomain.com SSLEngine On SSLCertificateFile /etc/apache2/ssl/yourdomain.crt SSLCertificateKeyFile /etc/apache2/ssl/yourdomain.key </ VirtualHost > |
在原有设置中增加一条:SSLCertificateChainFile /etc/apache2/ssl/startssl.chain.class1.server.crt,更改为如下:
1
2
3
4
5
6
7
8
| < VirtualHost *:443> DocumentRoot /var/www/yourdomain.com ServerName yourdomain.com SSLEngine On SSLCertificateFile /etc/apache2/ssl/yourdomain.crt SSLCertificateKeyFile /etc/apache2/ssl/yourdomain.key SSLCertificateChainFile /etc/apache2/ssl/startssl.chain.class1.server.crt </ VirtualHost > |
之后重启Apache:
1
| service apache2 restart |
刷新浏览器后Firefox显示连接安全,而Opera在Linux下显示安全,Windows下仍然提示“服务器试图应用安全措施,但没有成功”,可能与系统根证书目录,但毕竟StartCom自己都没说过支持Opera,这样说来问题也是解决了。
沒有留言:
張貼留言