今天嘗試在mac機上搭建docker registry私有倉庫時,杯具的發現最新的registry出于安全考慮,強制使用ssl認證,于是又詳細了解linux/mac上openssl的使用方法,接觸了一堆新英文縮寫,整理于下:
TLS:傳輸層安全協議 TransportLayer Security的縮寫
SSL:安全套接字層 SecureSocket Layer的縮寫
TLS與SSL對于不是專業搞安全的開發人員來講,可以認為是差不多的,這二者是并列關系,詳細差異見 http://kb.cnblogs.com/page/197396/
KEY 通常指私鑰。
CSR 是CertificateSigning 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
openssl genrsa -des3 -out server.key 2048這一步執行完以后,cert目錄下會生成server.key文件
2. 生成證書請求文件CSR
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的證書
openssl req -new -x509 -key server.key -out ca.crt -days 36504. 最后用第3步的CA證書給自己頒發一個證書玩玩
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,哦,還有毛爺爺就好了)
作者:菩提樹下的楊過出處:http://yjmyzz.cnblogs.com本文版權歸作者和博客園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接,否則保留追究法律責任的權利。分類: 16.linux/mac標簽: ssl, tls,openssl,crt好文要頂關注我 收藏該文菩提樹下的楊過關注 - 6粉絲 - 2732榮譽:推薦博客+加關注 1 0 ?上一篇:docker學習(6) docker中搭建java服務及nginx反向代理?下一篇:docker學習(7) docker-compose使用示例posted @ 2016-02-03 16:35 菩提樹下的楊過 閱讀(7418) 評論(3)編輯 收藏評論列表 #1樓2016-11-28 00:25 helloint 寫的挺好有個小錯誤:"我們只需要提交server.key、server.csr,"只需要提交server.csr也就是公鑰即可支持(1)反對(0) #2樓2016-11-30 13:33 黑豆白 server.key 要自己留好的,不需要給證書機構。而且是屬于保密的支持(0)反對(0) #3樓35816322016/12/15 14:55:422016-12-15 14:55 fdsa303 樓主你好。為什么只有一個私鑰?ca的私鑰怎么沒生成?這上面是用server.key的私鑰給自己的server.csr簽名,這樣豈不是亂套了?支持(0)反對(0)刷新評論刷新頁面返回頂部注冊用戶登錄后才能發表評論,請 登錄 或 注冊,訪問網站首頁。最新IT新聞:· 敢在京東賣假貨?劉強東:一定讓售假者破產· 騰訊糖大夫:用做內容的方式做慢病管理· TK教主講故事:我的黑客進化論(演講全文)· 2016谷歌教授科研獎公布,機器學習成最大贏家· 皮克斯團隊聯手可汗學院推出動畫及模擬課程? 更多新聞...最新知識庫文章:· 垃圾回收原來是這么回事· 「代碼家」的學習過程和學習經驗分享· 寫給未來的程序媛· 高質量的工程代碼為什么難寫· 循序漸進地代碼重構? 更多知識庫文章...歷史上的今天:2008-02-03 .Net3.0中的自動屬性(示例)2008-02-03 .net3.0中的擴展方法(示例)
新聞熱點
疑難解答