生成帶subjectAltName的ssl服務端證書【親測有效】


Chrome瀏覽器的證書驗證規則比Edge和Firefox更嚴格,如果證書不包含SubjectAltName,Chrome會認為其不安全,所以自簽證書時要添加做額外配置來添加SubjectAltName。【這個問題困擾了我兩天,嘗試過很多網上的方法,都沒用,崩潰】

  1. 說明:
    • 證書制作過程在Centos7環境進行,且使用Centos7自帶的OpenSSL工具。
    • 不需要生成CA相關文件,直接生成服務端證書。
    • 瀏覽器需要將生成的server.crt證書安裝到【受信人的根證書頒發機構】下。
    • Nginx需要同時配置上server.crt和server.key兩個文件。
    • 瀏覽器還要修改本地C:\Windows\System32\drivers\etc\hosts文件,配置證書所對應站點的域名,在瀏覽器本機的DNS映射。

建議先創建一個空目錄,作為證書制作空間,后續所有操作都在該目錄下進行。

  1. 首先新建一個小配置文件mySsl.conf,只包含如下內容:
[ req ]
default_bits       = 4096
distinguished_name = req_distinguished_name
req_extensions     = req_ext

[ req_distinguished_name ]
countryName                 = Country Name (2 letter code)
countryName_default         = cn
stateOrProvinceName         = State or Province Name (full name)
stateOrProvinceName_default = sc
localityName                = Locality Name (eg, city)
localityName_default        = cd
organizationName            = Organization Name (eg, company)
organizationName_default    = my
organizationalUnitName            = Organizational Unit Name (eg, section)
organizationalUnitName_default    = as
commonName                  = Common Name (e.g. server FQDN or YOUR name)
commonName_max              = 64
commonName_default          = yang.com

[ req_ext ]
subjectAltName = @alt_names

# 此段落標題的方括號兩邊【沒有空格】,只有同時配有IP和域名,才能在IP和域名訪問時都成功識別。
[alt_names]
IP.1    = 192.168.50.62
DNS.1   = yang.com
DNS.2   = yang.net
  1. 生成私鑰:
openssl genrsa -out server.key 4096
  1. 生成證書請求文件:

CSR是Certificate Signing Request的英文縮寫,即證書請求文件,也就是證書申請者在申請數字證書時由CSP(加密服務提供者)在生成私鑰的同時也生成證書請求文件,證書申請者只要把CSR文件提交給證書頒發機構后,證書頒發機構使用其根證書私鑰簽名就生成了證書公鑰文件,也就是頒發給用戶的證書。

openssl req -new -sha256 -out server.csr -key server.key -config mySsl.conf 

這里會要求輸入一系列參數,可以選擇不填直接回車。

  1. 檢查證書申請文件內容:
openssl req -text -noout -in server.csr

應該可以看到:
X509v3 Subject Alternative Name:
IP Address:192.168.50.62, yang.com, DNS:yang.com, DNS:yang.net

  1. 利用證書請求文件生成證書,執行如下命令:
openssl x509 -req -days 3650 -in server.csr -signkey server.key -out server.crt -extensions req_ext -extfile mySsl.conf


免責聲明!

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



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