openssl生成CA和服務器SSL證書


本文鏈接:https://www.cnblogs.com/obarong/p/13260489.html

名詞解釋:

  • CA(Certificate Authority):證書頒發機構
  • SSL(Secure Sockets Layer): 安全套接字協議
  • HTTPS(Hypertext Transfer Protocol Secure):安全超文本傳輸協議,應用了SSL。
  • key:私鑰
  • openssl:SSL工具
  • RSA:一種加密算法
  • x509:證書格式標准,這種證書只有公鑰,不包含私鑰。

編碼方式:

  • pem:后綴的證書都是base64編碼
  • der:后綴的證書都是二進制格式

證書:

  • csr:證書簽名請求,后綴的文件是用於向ca申請簽名的請求文件。
  • crt和cer:后綴的文件都是證書文件(編碼方式不一定,有可能是.pem,也有可能是.der)

一、編譯安裝openssl

參考:Windows編譯安裝openssl - 奧巴榮 - 博客園
https://www.cnblogs.com/obarong/p/13260321.html

二、創建根CA(完成一次)

創建根密鑰

注意: 這是用於簽署證書請求的密鑰,持有此證書的任何人都可以代表您簽署證書。因此,請將其保存在安全的地方!

openssl genrsa -des3 -out rootCA.key 4096

如果您想要一個非密碼保護的密鑰,只需刪除-des3選項

創建並自簽名根證書

openssl req -x509 -new -nodes -key rootCA.key -sha256 -days 1024 -out rootCA.crt

在這里,我們使用根密鑰創建了根證書,該根證書需要在所有必須信任我們的計算機中分發。

三、創建一個證書(為每個服務器完成)

對於需要來自我們CA的受信任證書的每個服務器/設備,都需要遵循此過程。

創建證書密鑰

openssl genrsa -out mydomain.com.key 2048

創建簽名(csr)

在證書簽名請求中,您可以指定要生成的證書的詳細信息。
根密鑰的所有者(在本例中是您之前創建的)將處理該請求以生成證書。

重要提示: 請注意,在創建簽名請求時,務必要指定提供服務IP地址或域名的Common Name,否則將無法驗證證書。

我將在這里描述兩種生成方式

方法A(交互式)

如果以這種方式生成csr,openssl將詢問您有關生成證書的問題,例如組織詳細信息和Common Name(CN),即創建證書的網址,例如mydomain.com

openssl req -new -key mydomain.com.key -out mydomain.com.csr

方法B(一行代碼)

此方法產生的輸出與方法A相同,但適用於自動化:)。

openssl req -new -sha256 -key mydomain.com.key -subj "/C=US/ST=CA/O=MyOrg, Inc./CN=mydomain.com" -out mydomain.com.csr

如果您需要通過其他配置,則可以使用-config參數,例如,在這里我想為證書添加替代名稱。

openssl req -new -sha256 \
    -key mydomain.com.key \
    -subj "/C=US/ST=CA/O=MyOrg, Inc./CN=mydomain.com" \
    -reqexts SAN \
    -config <(cat /etc/ssl/openssl.cnf \
        <(printf "\n[SAN]\nsubjectAltName=DNS:mydomain.com,DNS:www.mydomain.com")) \
    -out mydomain.com.csr

驗證csr的內容(可選)

openssl req -in mydomain.com.csr -noout -text

使用mydomain csr和密鑰以及CA Root密鑰生成證書

openssl x509 -req -in mydomain.com.csr -CA rootCA.crt -CAkey rootCA.key -CAcreateserial -out mydomain.com.crt -days 500 -sha256

驗證證書的內容(可選)

openssl x509 -in mydomain.com.crt -text -noout

參考

Self Signed Certificate with Custom Root CA · GitHub
https://gist.github.com/fntlnz/cf14feb5a46b2eda428e000157447309

[轉]如何創建一個自簽名的SSL證書(X509) - lihuang - 博客園
https://www.cnblogs.com/lihuang/articles/4205540.html

證書,私鑰,公鑰,pfx,keystore,pem,der 都是什么?_雲守護的專欄-CSDN博客_pem證書是什么
https://blog.csdn.net/earbao/article/details/82958518

ssl_百度百科
https://baike.baidu.com/item/SSL

問題

  • Mac添加rootCA.crt到鑰匙串-登錄-證書。訪問報錯
此服務器無法證實它就是 192.168.3.3 - 它的安全證書沒有指定主題備用名稱。這可能是因為某項配置有誤或某個攻擊者攔截了您的連接。

但是可以繼續前往。

解:
創建文件192.168.3.3-2.ext,添加內容

keyUsage = nonRepudiation, digitalSignature, keyEncipherment
extendedKeyUsage = serverAuth, clientAuth
subjectAltName=@SubjectAlternativeName

[ SubjectAlternativeName ]
IP.1=192.168.3.1
IP.2=192.168.3.3

生成crt

openssl x509 -req -in 192.168.3.3.csr -CA rootCA.crt -CAkey rootCA.key -CAcreateserial -out 192.168.3.3-2.crt -days 500 -sha256 -extfile 192.168.3.3-2.ext

參考 OpenSSL自簽發自建CA簽發SSL證書 - justdoit - 博客園
https://www.cnblogs.com/will-space/p/11913744.html

  • crt轉pem

解:

openssl x509 -in 192.168.3.3-2.crt -out 192.168.3.3-2.pem
  • 提示證書時間過長

解:有效時間要小於39個月

openssl x509 -req -in 192.168.3.3.csr -CA rootCA.crt -CAkey rootCA.key -CAcreateserial -out 192.168.3.3-2.crt -days 500 -sha256 -extfile 192.168.3.3-2.ext

參考 Mac版Chrome 錯誤提示NET::ERR_CERT_VALIDITY_TOO_LONG怎么解決? - 知乎
https://www.zhihu.com/question/403851332


免責聲明!

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



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