之前有做過產生憑證給外部的憑證中心,但對方回覆pem憑證之後,我還沒有自己實際匯入到伺服器上,所以就來做一個簡單的測試,自己架設一台網頁伺服器,然後匯入憑證,最後在測試一下https有沒有生效。以下就一步步紀錄過程:
1.安裝網頁伺服器
$ sudo apt install apache2 -y
$ sudo a2enmod ssl \\enable apache ssl
$ sudo systemctl restart apache2
$ sudo a2enmod ssl \\enable apache ssl
$ sudo systemctl restart apache2
2.設定憑證路徑
先把憑證放在一個安全的路徑,例如我的憑證叫做abccom.pem、私鑰叫做abccomkey.pem,放在
$ sudo mv /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/abccom-ssl.conf \\複製default設定檔,並將檔名命名為自己的domain
$ sudo vim /etc/apache2/sites-available/abccom-ssl.conf \\調整config內容
$ sudo vim /etc/apache2/sites-available/abccom-ssl.conf \\調整config內容
\\確認config內三行的設定
SSLEngine on \\SSL開啟
SSLCertificateKeyFile /etc/ssl/private/abccomkey.pem \\私鑰的位置
SSLCertificateFile /etc/ssl/certs/abccom.pem \\憑證的位置
SSLEngine on \\SSL開啟
SSLCertificateKeyFile /etc/ssl/private/abccomkey.pem \\私鑰的位置
SSLCertificateFile /etc/ssl/certs/abccom.pem \\憑證的位置
$ sudo a2ensite /etc/apache2/sites-available/abccom-ssl.conf \\enable設定檔
$ sudo apache2ctl -t \\確認SSL狀態
$ sudo apache2ctl -t \\確認SSL狀態
$ sudo systemctl restart apache2
如果要知道憑證有沒有生效,就用老方法,到瀏覽器上看https有沒有不正常的訊息,而且要確定網路有對外,之前裝完後一直噴「憑證不安全」的訊息,後來才知道是該測試機沒有開放外網造成的,畢竟憑證是外面的公司發放的,要能對外測試才會有效。
3.自簽憑證的做法
前面作法比較簡單,只是匯入已經申請好的憑證,如果要弄一個自簽憑證來測試也是一個不錯的實驗。
$ sudo mkdir /etc/apache2/ssl
\\產出憑證和私鑰
$ sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/apache2/ssl/abc.key -out /etc/apache2/ssl/abc.crt
$ sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/apache2/ssl/abc.key -out /etc/apache2/ssl/abc.crt
![]() |
流程就跟平常產生憑證的過程一樣 |
$ sudo vim /etc/apache2/sites-available/abc.conf
\\一樣在憑證和私鑰選項上指定好路徑
SSLCertificateFile /etc/apache2/ssl/abc.crt
SSLCertificateKeyFile /etc/apache2/ssl/abc.key
\\重吃設定檔並重啟網頁伺服器
$ sudo a2ensite abc.conf
$ sudo service apache2 restart
自己測試憑證或在組織內網這是可行的,如果是一個對外的服務,還是要透過申請憑證單位核發合法的憑證才行。
5.如何驗證憑證有沒有生效
想看自簽憑證有沒有生效,可以修改電腦的hosts,然後測試https://domain/ 有沒有辦法開啟。
5.如何比對憑證和私鑰
之前發生一個比較烏龍的錯誤,就是我不小心把憑證和私鑰搞混,我們已知憑證和私鑰匯入是要同步進行的,如果跟我一樣沒有歸類好,一大堆憑證和私鑰搞不清楚的話,就只好用openssl指令來做比較,不然等到匯入時出錯就悲劇了。
\\crt檔先解密並另存
openssl x509 -noout -modulus -in <public.crt> | openssl md5 > /tmp/crt.pub
openssl x509 -noout -modulus -in <public.crt> | openssl md5 > /tmp/crt.pub
\\私鑰也解密並另存
openssl rsa -noout -modulus -in <private.key> | openssl md5 > /tmp/key.pub
openssl rsa -noout -modulus -in <private.key> | openssl md5 > /tmp/key.pub
\\用diff指令做區別,如果沒有任何結果就表示憑證和私鑰是相同的,有結果則代表兩者不是同一組
diff /tmp/crt.pub /tmp/key.pub
diff /tmp/crt.pub /tmp/key.pub
附帶提醒一下,私鑰是不能搞丟的,最好是找一個安全的位置備份起來,萬一憑證搞丟了,至少還有機會再重產csr,如果私鑰真的搞丟了,一切就只能重頭來過。
沒有留言:
張貼留言