使用CA自簽名證書搭建HTTPS網站

在自己倒騰https網站的時候用自定義的CA給自己的網站做自簽名的問題一直困擾了我好久,下面是我自己測試成功的案例,網上有很多類似的問題,在這裏儲備一份供自己和他人蔘考使用。

1. 安裝linux,apache,openssl組件,在此不做贅述,我用的就是centos裏自帶的apache和openssl。

2. 生成自簽名的CA證書

(1) 生成CA私鑰
[root@localhost ~]# openssl genrsa -out ca.key 2048

# 在當前目錄下生成ca.key文件,這個文件是下一步生成CA證書的私鑰。
(2) 生成CA自簽名證書
#方法一:如果需要使用第三方CA簽發證書
[root@localhost ~]# openssl req -new -key ca.key -out ca.req -config /etc/pki/tls/openssl.cnf
[root@localhost ~]# openssl req -x509 -key ca.key -in ca.req -out ca.crt -days 3650 -config /etc/pki/tls/openssl.cnf

#方法二:如果就服務器本機就是CA,則可以將上述兩個操作合併爲一個操作(如下命令),它在自簽署過程中將在內存中自動創建證書請求文件,當然,既然要創建證書請求文件,就需要人爲輸入申請者的信息了。
[root@localhost ~]# openssl req -new -x509 -days 3650 -key ca.key -out ca.crt -config /etc/pki/tls/openssl.cnf 

# 在當前目錄下生成ca.crt這個文件,這個就是CA證書了,其他服務器和客戶端的證書都是用ca.crt這個文件簽發的。

3. 生成服務器證書

(1) 生成服務器端的私鑰
[root@localhost ~]# openssl genrsa -out server.key 2048 

# 在當前目錄下生成server.key文件,這個文件是服務器段的私鑰。
(2) 生成服務器端的簽署申請
[root@localhost ~]# openssl req -new -out server.csr -key server.key -config /etc/pki/tls/openssl.cnf 

# 在當前目錄下生成server證書的簽署申請,後面用CA給服務器簽署證書的時候需要用到這個申請文件。
# 生成簽署申請的過程中需要填寫一些信息,按提示要求填寫即可
# 但需要說明的是Common Name必須和ssl.conf裏面的ServerName一致
# 否則客戶端訪問的時候會提示證書信息不能認證。
(3) 使用CA證書給服務器端簽署服務器證書

進入/etc/pki/CA目錄下,在裏面創建一個index.txt空文件,以及一個名爲serial,內容爲01的文件

[root@localhost ~]# touch /etc/pki/CA/index.txt
[root@localhost ~]# touch /etc/pki/CA/serial
[root@localhost ~]# echo "01" >> /etc/pki/CA/serial

執行簽署證書命令

[root@localhost ~]# openssl ca -in server.csr -out server.crt -cert ca.crt -keyfile ca.key -config /etc/pki/tls/openssl.cnf

# 這個server.crt就是由CA簽發的服務器證書。 

4. 配置ssl.conf

將我們生成的server.crt,server.key,ca.crt三個文件複製到/usr/local/apache2/conf/ssl.crt目錄下
編輯ssl.conf文件,修改SSLCertificateFile,SSLCertificateKeyFile,SSLCACertificatePath,SSLCACertificateFile幾個配置項如下:

SSLCertificateFile "/usr/local/apache2/conf/ssl.crt/liveupdate_server.crt"
SSLCertificateKeyFile "/usr/local/apache2/conf/ssl.crt/server.key"
SSLCACertificatePath "/usr/local/apache2/conf/ssl.crt"
SSLCACertificateFile "/usr/local/apache2/conf/ssl.crt/ca.crt"

重啓apache服務

# 如果是用yum安裝的apache服務
[root@localhost ~]# service httpd restart 
# 如果是用源碼安裝的apache服務
[root@localhost ~]# /usr/local/apache2/bin/apachectl -k restart

5. 在PC端導入CA證書到受信任的根證書頒發機構,即可實現https訪問

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章