linux下生成https證書nginx配置(openssl CRT PEM KEY CSR X.509認識)


SSL
SSL - Secure Sockets Layer,現在應該叫"TLS",但由於習慣問題,我們還是叫"SSL"比較多.http協議默認情況下是不加密內容的,這樣就很可能在內容傳播的時候被別人監聽到,對於安全性要求較高的場合,必須要加密,https就是帶加密的http協議,而https的加密是基於SSL的,它執行的是一個比較下層的加密,也就是說,在加密前,你的服務器程序在干嘛,加密后也一樣在干嘛,不用動,這個加密對用戶和開發者來說都是透明的.

OpenSSL - 簡單地說,OpenSSL是SSL的一個實現,SSL只是一種規范.理論上來說,SSL這種規范是安全的,目前的技術水平很難破解,但SSL的實現就可能有些漏洞,如著名的"心臟出血".OpenSSL還提供了一大堆強大的工具軟件,強大到90%我們都用不到.

證書標准
X.509 - 這是一種證書標准,主要定義了證書中應該包含哪些內容.其詳情可以參考RFC5280,SSL使用的就是這種證書標准.

編碼格式
同樣的X.509證書,可能有不同的編碼格式,目前有以下兩種編碼格式.

PEM - Privacy Enhanced Mail,打開看文本格式,以"-----BEGIN..."開頭, "-----END..."結尾,內容是BASE64編碼.

查看PEM格式證書的信息:openssl x509 -in certificate.pem -text -noout

Apache和*NIX服務器偏向於使用這種編碼格式.

DER - Distinguished Encoding Rules,打開看是二進制格式,不可讀.

查看DER格式證書的信息:openssl x509 -in certificate.der -inform der -text -noout

Java和Windows服務器偏向於使用這種編碼格式.

相關的文件擴展名
這是比較誤導人的地方,雖然我們已經知道有PEM和DER這兩種編碼格式,但文件擴展名並不一定就叫"PEM"或者"DER",常見的擴展名除了PEM和DER還有以下這些,它們除了編碼格式可能不同之外,內容也有差別,但大多數都能相互轉換編碼格式.

CRT - CRT應該是certificate的三個字母,其實還是證書的意思,常見於*NIX系統,有可能是PEM編碼,也有可能是DER編碼,大多數應該是PEM編碼,相信你已經知道怎么辨別.

CER - 還是certificate,還是證書,常見於Windows系統,同樣的,可能是PEM編碼,也可能是DER編碼,大多數應該是DER編碼.

KEY - 通常用來存放一個公鑰或者私鑰,並非X.509證書,編碼同樣的,可能是PEM,也可能是DER.

查看KEY的辦法:openssl rsa -in mykey.key -text -noout

如果是DER格式的話,同理應該這樣了:openssl rsa -in mykey.key -text -noout -inform der

CSR - Certificate Signing Request,即證書簽名請求,這個並不是證書,而是向權威證書頒發機構獲得簽名證書的申請,其核心內容是一個公鑰(當然還附帶了一些別的信息),在生成這個申請的時候,同時也會生成一個私鑰,私鑰要自己保管好.做過iOS APP的朋友都應該知道是怎么向蘋果申請開發者證書的吧.

查看的辦法:openssl req -noout -text -in my.csr (如果是DER格式的話照舊加上-inform der,這里不寫了)

證書編碼的轉換
PEM轉為DER openssl x509 -in cert.crt -outform der -out cert.der

DER轉為PEM openssl x509 -in cert.crt -inform der -outform pem -out cert.pem

(提示:上面例子是轉換證書文件,如果要轉換KEY文件也類似,只不過把x509換成rsa,要轉CSR的話,把x509換成req)

未完待續
更多內容請訪問下面的源鏈接

本文作者: 開發者首頁
本文鏈接: https://blog.kfzsy.com/linux-https-nginx.html
版權聲明: 本博客所有文章除特別聲明外,均采用 BY-NC-SA 許可協議。轉載請注明出處!


免責聲明!

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



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