SSL 若只是要內部使用, 不需要購買, 直接啟用即可, 只是會跳出警告視窗就是了~
此篇在講的是購買完 SSL 憑證後, 要做的一些事情, 每間購買完憑證後要做的事情都不太一樣, 不過也都大同小異, 當參考看看即可.
申請 SSL 事前準備
- 一個固定IP
- 能產生 CSR 的 Web server
- Domain 在 WHOIS 的紀錄是正確的資訊
- 一個可以收 postmaster@yourdomain / postmaster@yourdomain / admin@yourdomain 的 Mail server, 於自己 Domain 設好 MX.
Apache2 的 SSL 產生、建立、安裝、設定
因為 SSL 需要用實際的資訊, 此篇內容如果混合一堆 example.com, 看起來會很混亂, 所以我一律以 Feebee 為例 + 購買 COMODO 憑證
以下為買完 SSL 憑證後, 再來要產生憑證、設定 Web server 的步驟, 簡單大概如下述幾步驟:
- 先產生 Private key 再由此 key 產生 CSR 憑證
- SSL 產生的步驟大致有下面三步驟
- openssl genrsa -des3 -out self-ssl.key 2048 # private key
- openssl req -new -key self-ssl.key -out self-ssl.csr # certificate signing request (CSR)
- openssl x509 -req -days 365 -in self-ssl.csr -signkey self-ssl.key -out self-ssl.crt # sign
- 再去取的官方的憑證(crt), 再一起設定進 Web server 即可.
Apache2 的憑證產生、設定詳細步驟
- ssh your_ssl_server
- sudo apt-get install apache2
- sudo mkdir /etc/apache2/ssl.crt
- sudo openssl genrsa -des3 -out /etc/apache2/ssl.crt/feebee.com.tw.key 2048 # private key, 需要輸入 pass phrase.(取用 key 需要的密碼)
- sudo openssl req -new -key /etc/apache2/ssl.crt/feebee.com.tw.key -out /etc/apache2/ssl.crt/feebee.com.tw.csr # certificate signing request (CSR), 以下詢問問題這邊列個大概, 請自行依照自己狀況回答
輸入剛剛設定 pass phrase key 的密碼
Country Name (2 letter code) [AU]: TW
State or Province Name (full name) [Some-State]: Taiwan
Locality Name (eg, city) []: Taipei City
Organization Name (eg, company) [Internet Widgits Pty Ltd]: Firstweb Limited
Organizational Unit Name (eg, section) []: IT
Common Name (e.g. server FQDN or YOUR name) []: feebee.com.tw
Email Address []: YOUREMAIL@example.com
其他問題 Enter 按過即可
產生 X.509 憑證
- sudo openssl x509 -req -days 3650 -in /etc/apache2/ssl.crt/feebee.com.tw.csr -signkey /etc/apache2/ssl.crt/feebee.com.tw.key -out /etc/apache2/ssl.crt/feebee.com.tw.crt # sign, 一樣需要輸入 pass phrase key password
Signature ok # 出現這個就好了
- cat /etc/apache2/ssl.crt/feebee.com.tw.csr # 將 csr 內容完整貼到購買 SSL 的網頁去, 若要挑選 Web server, 挑選 Apache + mod_ssl, 這邊可能會需要 Email 驗證, 就會需要自己的 Mail server.
下載 COMODO 憑證
購買憑證的地方, 會有地方可以下載憑證, 下載解開會有下面兩個檔案:
- feebee.com.tw.crt
- bundle.crt
設定 Apache2 的步驟
- scp feebee.com.tw.crt bundle.crt your_ssl_server:
- sudo mv /etc/apache2/ssl.crt/feebee.com.tw.crt /etc/apache2/ssl.crt/feebee.com.tw.x509.crt
- sudo mv feebee.com.tw.crt bundle.crt /etc/apache2/ssl.crt/
- 再來就可以來設定 Apache ssl
- sudo a2enmod ssl # 啟用 ssl
- vim /etc/apache2/sites-enabled/ssl.conf
<IfModule mod_ssl.c> <VirtualHost *:443> DocumentRoot /var/wwww/ ServerName feebee.com.tw #SSLEngine on #SSLProtocol all -SSLv2 -SSLv3 #SSLCipherSuite ALL:!ADH:!EXPORT:!SSLv2:RC4+RSA:+HIGH:+MEDIUM:!LOW:!SSLv3 SSLCertificateFile /etc/apache2/ssl.crt/feebee.com.tw.crt SSLCertificateKeyFile /etc/apache2/ssl.crt/feebee.com.tw.key SSLCertificateChainFile /etc/apache2/ssl.crt/bundle.crt CustomLog /var/log/apache2/ssl_request_log "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b" </VirtualHost> </IfModule>
- service apache2 restart # 會需要輸入 pass phrase key 的密碼
- https://yourdomain.com # 就可以連連看了, 沒有跳出 SSL 警告就對了.
註:Nginx 只有兩個 SSL File,所以需要產生 bundle.crt:cat example.crt example.com.ca-bundle >> example-bundle.crt