Ubuntu 18.04使用OpenSSL自簽證書(證書支持多IP及多域名,谷歌瀏覽器無警告)


前言

在HTTPS數據傳輸的過程中,需要用SSL/TLS對數據進行加密和解密,以保證網絡傳輸過程中數據的機密性。HTTPS協議可以大致分為兩個部分:其一是協商密鑰,首先當Client向Web Server發起請求時,Web Server向Client返回一個包含Server端公鑰的證書,然后Client驗證該證書的合法性並生成一個隨機密鑰,接着使用該證書對生成的隨機密鑰進行非對稱加密后發送回Web Server,最后Web Server使用私鑰進行解密后獲取Client生成的隨機密鑰;其二是加密通信,Web Server與Client端采用隨機密鑰進行對稱加解密進行通信。HTTPS通信流程圖如下,引用於Leon_hy的博客。證書一般由第三方CA進行簽發,自簽證書將不被瀏覽器信任,會彈出連接不安全的小窗。本文介紹了Ubuntu 18.04使用OpenSSL自建CA且簽發證書的流程,並成功獲取谷歌等瀏覽器的信任。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

環境准備

1. OpenSSL依賴安裝

$ sudo apt-get install -y openssl libssl-dev

2. 創建證書保存目錄及相關文件

需要注意的是,以下除了certificate文件夾外,命名必須與/usr/local/ssl/openssl.cnf中的對應名稱保持一致,以下均采用默認值

$ cd ~
$ mkdir certificate && cd certificate
$ mkdir demoCA && cd demoCA
$ mkdir private newcerts
$ touch index.txt
$ echo '01' > serial

自建CA

1. 生成根密鑰

需要注意的是,此處的密鑰名必須與/usr/local/ssl/openssl.cnf中的名稱保持一致,默認為cakey.pem

$ cd private
$ openssl genrsa -out cakey.pem 2048

2. 生成根CA證書

$ openssl req -new -x509 -days 3650 -key cakey.pem -out cacert.pem

隨后按照指引填寫根CA證書的相關信息,其中填寫內容不做要求(特別指出Common Name此處為根證書頒發機構,命名建議為XX Root CA)

3. 將根證書移動到demoCA文件夾下

$ cd .. && mv ./private/cacert.pem ./

添加信任

下面介紹兩種證書驗證場景下,添加信任的方式

1. Google瀏覽器(火狐瀏覽器類似)

設置->隱私設置和安全性->管理證書->導入->下一步->瀏覽

注意此處谷歌瀏覽器默認導入證書后綴為crt,可以選擇所有文件后導入cacert.pem文件到受信任的根證書頒發機構並確認

2. OpenSSL默認證書驗證文件(調用OpenSSL庫驗證證書合法性的應用將使用該文件如curl等,注意在Ubuntu其他版本中ca-certificates.crt文件可能又叫做ca-bundle.crt)

$ sudo sh -c "cat cacert.pem >> /etc/ssl/certs/ca-certificates.crt"

頒發證書

1. 切換出demoCA文件夾,到certificate文件夾

$ cd ~/certificate

2. 創建custom.ext文件,添加多IP配置,文件內容如下(如果需要配置多DNS域名解析,可以在[ SubjectAlternativeName ]下添加DNS.1 = www.XXX.com或者正則匹配式*.XXX.com)

 

 3. 創建私鑰

$ openssl genrsa -out custom.key 2048

4. 創建證書請求文件

$ openssl req -new -key custom.key -out custom.csr

隨后按照指引填寫證書的相關信息,填寫內容除了Common Name,其余部分盡量與根證書保持一致(Common Name內容不做要求)

5. 簽發證書

$ openssl ca -in custom.csr -extfile custom.ext -days 365 -out custom.crt

簽發后的證書連同私鑰可以供Web Server使用

測試

1. google瀏覽器測試結果

 

2. 火狐瀏覽器測試結果

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM