openssl、x509、crt、cer、key、csr、ssl、tls 這些都是什么鬼?


今天嘗試在mac機上搭建docker registry私有倉庫時,杯具的發現最新的registry出於安全考慮,強制使用ssl認證,於是又詳細了解linux/mac上openssl的使用方法,接觸了一堆新英文縮寫,整理於下:

TLS:傳輸層安全協議 Transport Layer Security的縮寫

SSL:安全套接字層 Secure Socket Layer的縮寫

TLS與SSL對於不是專業搞安全的開發人員來講,可以認為是差不多的,這二者是並列關系,詳細差異見 http://kb.cnblogs.com/page/197396/

KEY 通常指私鑰。

CSR 是Certificate Signing Request的縮寫,即證書簽名請求,這不是證書,可以簡單理解成公鑰,生成證書時要把這個提交給權威的證書頒發機構。

CRT 即 certificate的縮寫,即證書。

X.509 是一種證書格式.對X.509證書來說,認證者總是CA或由CA指定的人,一份X.509證書是一些標准字段的集合,這些字段包含有關用戶或設備及其相應公鑰的信息。

X.509的證書文件,一般以.crt結尾,根據該文件的內容編碼格式,可以分為以下二種格式:

PEM - Privacy Enhanced Mail,打開看文本格式,以"-----BEGIN..."開頭, "-----END..."結尾,內容是BASE64編碼.
Apache和*NIX服務器偏向於使用這種編碼格式.

DER - Distinguished Encoding Rules,打開看是二進制格式,不可讀.
Java和Windows服務器偏向於使用這種編碼格式

OpenSSL 相當於SSL的一個實現,如果把SSL規范看成OO中的接口,那么OpenSSL則認為是接口的實現。接口規范本身是安全沒問題的,但是具體實現可能會有不完善的地方,比如之前的"心臟出血"漏洞,就是OpenSSL中的一個bug.

 

openssl 給自己頒發證書的步驟:

前提:先建一個cert目錄,cd到該目錄,以下所有命令的當前路徑均為該目錄

1. 生成私鑰KEY

1 openssl genrsa -des3 -out server.key 2048

這一步執行完以后,cert目錄下會生成server.key文件

2. 生成證書請求文件CSR

1 openssl req -new -key server.key -out server.csr

該命令先進入交互模式,讓你填一堆東西,參考下圖:


要注意的是Common Name這里,要填寫成使用SSL證書(即:https協議)的域名或主機名,否則瀏覽器會認為不安全。例如:如果以后打算用https://yjm-docker/xxx 這里就填寫yjm-docker

3. 生成CA的證書

前面提過X.509證書的認證者總是CA或由CA指定的人,所以得先生成一個CA的證書

1 openssl req -new -x509 -key server.key -out ca.crt -days 3650

4. 最后用第3步的CA證書給自己頒發一個證書玩玩

123 openssl x509 -req -days 3650 -in server.csr \  -CA ca.crt -CAkey server.key \  -CAcreateserial -out server.crt

執行完以后,cert目錄下server.crt 就是我們需要的證書。當然,如果要在google等瀏覽器顯示出安全的綠鎖標志,自己頒發的證書肯定不好使,得花錢向第三方權威證書頒發機構申請(即:第4步是交給權威機構來做,我們只需要提交server.key、server.csr,哦,還有毛爺爺就好了)


注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2020 ITdaan.com