一、 建立自己的憑證中心(CA)
二、 web server 向憑證中心(CA) 發送簽署需求,取得憑證
三、 放置憑證
四、 瀏覽器安裝憑證中心(CA)的憑證
一、 建立自己的憑證中心(CA)
一般對外開放的web server會向具有公信力的憑證中心(CA)或其下的憑證代發者申請憑證,但如果是測試網站或者在lan內部的網站,則無法這樣申請,因此要自己仿造憑證中心,並讓瀏覽器安裝此憑證中心的憑證。
憑證中心(CA)包含一個密鑰(key)及憑證(cer)。
key的生成:
mkdir -p /etc/pki/tls cd /etc/pki/tls/ca openssl genrsa -out ca.key.pem 2048 chmod 600 ca.key.pem此時產生的 ca.key.pem 就是憑證中心(CA)的密鑰(key),並且它的格式是pem格式。
接著建立憑證中心(CA)的憑證(cer),先建立申請憑證的需求ca.csr
openssl req -new -key ca.key.pem -out ca.csr \ -subj "/O=myca/OU=myca/CN=*.ca.net"使用ca.csr向自己申請憑證
openssl x509 -req -days 3650 -sha256 \ -extensions v3_ca -signkey ca.key.pem \ -in ca.csr -out ca.cer.pem openssl pkcs12 -export -cacerts -inkey ca.key.pem \ -in ca.cer.pem -out ca.cer.p12 -passout pass:ca.cer.pem就是憑證中心(CA)的憑證,格式為pem。
另外也產生了ca.cer.p12是格式為p12的憑證,可用於一般瀏覽器匯入用。
最後可以刪除掉不需要的ca.csr
二、 web server 向憑證中心(CA) 發送簽署需求,取得憑證
假設我們的server名稱為myserver,在此網域下為myserver.ca.net,
先建立server自己的密鑰(myserver.ca.net.key.pem)與申請憑證需求myserver.csr
openssl genrsa -out myserver.ca.net.key.pem 2048 openssl req -new -key myserver.ca.net.key.pem -out myserver.csr\ -subj "/O=myserver/OU=myserver/CN=myserver.ca.net"其中CN項目填寫的是要申請的domain name,必須與機器的名稱設定相同。
接著透過CA來簽署這個需求產生server的憑證(myserver.cer.pem)
openssl x509 -req -days 3650 \ -sha256 -extensions v3_req -CA ca.cer.pem -CAkey ca.key.pem \ -CAserial ca.srl -CAcreateserial -in myserver.csr \ -out myserver.ca.net.cer.pem取得server的憑證(myserver.ca.net.cer.pem)後,可以刪除需求檔myserver.csr
PS:需要特別注意,chrome已經認定sha1不安全,因此憑證的簽署可使用sha256
三、 放置憑證
將產生的憑證檔放置在安全(外部無法讀取)的地方,例如 /etc/pki/tls/,
然後設定apache的/etc/httpds/ssl.conf
SSLCertificateFile /etc/pki/tls/myserver.ca.net.cer.pem SSLCertificateKeyFile /etc/pki/tls/myserver.ca.net.key.pem接著記得重起apache:service httpd restart
四、 瀏覽器安裝憑證中心(CA)的憑證
將ca.cer.p12下載到需要連線到此server的client,然後安裝在瀏覽器的憑證上面就可以了。
例如chrome可以從設定的 HTTPS/SSL 憑證管理中,增加"信任的根憑證授權"來增加。
沒有留言:
張貼留言