使用OpenSSL生成自簽名SSL證書

nklinsirui發表於2019-04-21

使用OpenSSL生成自簽名SSL證書

參考文件

一鍵生成自簽名SSL證書和私鑰

參見 create_self_signed_cert.sh

./create_self_signed_cert.sh "/C=CN/ST=Guangdong/L=Guangzhou/O=xdevops/OU=xdevops/CN=gitlab.xdevops.cn"

檢查OpenSSL

檢查是否已經安裝openssl:

openssl version

一般在CentOS7上,openssl已經預設安裝好了。

生成自簽名的SSL證書和私鑰

第一步:生成私鑰

# genra	生成RSA私鑰
# -des3	des3演算法
# -out server.key 生成的私鑰檔名
# 2048 私鑰長度
openssl genrsa -des3 -out server.pass.key 2048

輸入一個4位以上的密碼。

第二步:去除私鑰中的密碼

openssl rsa -in server.pass.key -out server.key

注意:有密碼的私鑰是server.pass.key,沒有密碼的私鑰是server.key

第三步:生成CSR(證書籤名請求)

# req 生成證書籤名請求
# -new 新生成
# -key 私鑰檔案
# -out 生成的CSR檔案
# -subj 生成CSR證書的引數
openssl req -new -key server.key -out server.csr -subj "/C=CN/ST=Guangdong/L=Guangzhou/O=xdevops/OU=xdevops/CN=gitlab.xdevops.cn"

subj引數說明如下:

欄位 欄位含義 示例
/C= Country 國家 CN
/ST= State or Province 省 Guangdong
/L= Location or City 城市 Guangzhou
/O= Organization 組織或企業 xdevops
/OU= Organization Unit 部門 xdevops
/CN= Common Name 域名或IP gitlab.xdevops.cn

第四步:生成自簽名SSL證書

# -days 證書有效期
openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt

X.509證書包含三個檔案:key,csr,crt。

  • key是伺服器上的私鑰檔案,用於對傳送給客戶端資料的加密,以及對從客戶端接收到資料的解密
  • csr是證書籤名請求檔案,用於提交給證書頒發機構(CA)對證書籤名
  • crt是由證書頒發機構(CA)簽名後的證書,或者是開發者自簽名的證書,包含證書持有人的資訊,持有人的公鑰,以及簽署者的簽名等資訊

備註:在密碼學中,X.509是一個標準,規範了公開祕鑰認證、證書吊銷列表、授權憑證、憑證路徑驗證演算法等。

在Server中配置

在Server中配置:

  • 宣告開啟HTTPS (SSL認證)
  • 宣告偵聽443埠(並確保已在防火牆上開啟443埠)
  • 複製已簽名的SSL證書和私鑰到指定位置,並設定正確的檔案許可權
  • 配置已簽名的SSL證書(.crt)的位置
  • 配置已簽名的SSL證書私鑰(.key)的位置
  • 配置將HTTP請求都重定向到HTTPS

在瀏覽器中訪問

在瀏覽器中開啟https://<domain_name>來訪問。

在Firefox瀏覽器中可以新增Security Exception來忽略HTTPS錯誤警告。

Chrome瀏覽器可以嘗試通過匯入CA證書的方式來忽略HTTPS錯誤警告。

注意:Chrome瀏覽器可能有匯入CA證書後仍然無法訪問的問題;不同瀏覽器對自簽名SSL證書的檢查和限制也有所區別。

注意

自簽名的SSL證書存在安全隱患,在生產環境上需要購買和使用經權威機構認證和辦法的證書。

相關文章