您好,登錄后才能下訂單哦!
目錄
1???? CA架構說明
1.1????? 名詞說明
1.2????? 信任關系說明
2???? 證書在windows服務中的具體使用方式
3???? Openssl實現CA體系的操作方法
3.1????? 使用自簽名證書自建CA(在CA端操作)
3.2????? 在客戶端生成證書申請文件(在APP端操作)
3.3????? 在CA端頒發證書
3.4????? 具體案例測試
3.4.1?????? 環境介紹
3.4.2?????? Centos19安裝配置nginx
3.4.3?????? nginx使用自簽名啟用ssl認證
3.4.4?????? 使用windows01訪問測試---預期效果證書不信任
3.4.5?????? windows01添加對自簽名證書的信任
3.4.6?????? 使用windows01訪問測試---預期效果證書信任
3.4.7?????? 在centos18上創建CA
3.4.8?????? 使用CA頒發證書并綁定到nginx
3.4.9?????? 使用windows01訪問測試---預期效果證書不信任
3.4.10???? windows01添加對CA(centos18)的信任
3.4.11???? 使用windows01訪問測試---預期效果證書信任
?
CA:證書頒發機構,類似與工商局,專門發放證書的機構,只有得到了CA頒發的證書應用才能正常對外提供服務
公鑰:顧名思義,公共的秘鑰,安全性要求不高,可以共享出來給大家使用
私鑰:私有的秘鑰,只能自己使用,需要防止泄露
公鑰和秘鑰的關系:公鑰和秘鑰成對出現,互相認證,即我的公鑰加密的文件只能我的秘鑰解開,我的秘鑰加密的文件只能我的公鑰解開,每個個體(可以是用戶或者主機)都可以擁有一對。
證書:采用公鑰秘鑰的特性生成的一種文件,由CA頒發出來的,類似于營業執照
如上圖,APP可以是Web server或者其他的應用程序,PC代指瀏覽APP所提供服務的設備包括電腦手機等設備。PC訪問APP時(ssl認證)需要驗證APP綁定的證書的真實性,而證書是由CA頒發的,此時PC只要信任CA即可,信任的方式為將CA的自簽名證書加入到電腦的“受信任的證書頒發機構”。可以通過windows的控制臺或者IE瀏覽器中的設置查看電腦信任了哪些CA,如下查看方式
打開”internet選項”—“內容”---“證書”---“受信任的根證書頒發機構”可以看到微軟已經幫我們信任好了一些公共的CA。
一般找這里面列出來的CA組織申請證書都是需要費用的,所以大家經常會在訪問網頁時會發現安全證書的警告,這個一般是組織內部CA頒發的或者是自簽名證書。自簽名證書就是通過將CA與APP所在的服務器合二為一的方式實現的。
#上面的操作是windows系統,如果是RedHat系統可以使用如下方式添加對CA的信任
cat [根證書文件] >> /etc/pki/tls/certs/ca-bundle.crt
由于作者前期是從事Windows運維相關的工作,先簡單介紹一下CA在windows AD中的應用。
在AD環境中一般會需要架設一臺CA供其他需要證書加密的服務使用,CA架設(集成AD架設的方式)完成之后域中的所有windows設備都會自動信任該CA,域中的所有設備和所有用戶都可以向CA申請證書。申請證書的方式有兩種,一種是登錄CA提供的網頁申請,另一種如下:
“開始”---“運行”---“輸入mmc回車”---“文件”---“添加刪除管理單元”---“證書”如下圖
可以使用用戶或者主機的名義去申請,這里選擇我的用戶賬戶
右鍵“個人”---“所有任務”---“申請新證書”點擊下一步
在這個界面需要在CA端定義了注冊策略之后,這里就會顯示注冊策略,選擇相應的注冊策略之后申請就會被提交到CA,在CA端進行證書頒發之后在證書這一列就會顯示出來證書了
這里就簡單的介紹了一下windows AD環境中的證書申請方法,如果CA是使用第三方工具如openssl等工具搭建的,具體的操作方法也可能會有一些差異
#創建私鑰
openssl genrsa -out cakey.pem 4096?
#使用上面的私鑰創建證書,這個證書被稱為根證書,一臺電腦將這個證書導入到“受信任的根證書頒發機構”后就相當于信任的這個CA
openssl req -new -x509 -key cakey.pem -out cacert.pem -days 3650
#生成私鑰
openssl genrsa -out app.key 4096
#生成證書申請文件,實際上是生成了一個自簽名證書,只是后面需要拿給CA簽名
openssl req -new -x509 -key app.key ?-out app.csr -days 3650
#將上一步生成的私鑰拷貝到CA端,執行如下操作
openssl ca -in httpd.csr -out httpd.crt -days 3650
#證書生成完成后可以通過如下命令查看證書
Openssl x509 -in httpd.crt -noout -serial -subject
Centos18:CA
Centos19:運行了nginx,并開啟ssl模塊,向CA申請證書
Windows01:做實驗的windows電腦,命名為windows01
使用源碼安裝太麻煩,直接使用epel的yum源來安裝,如下yum源供參考,具體的安裝步驟就不多做介紹了
#創建私鑰
openssl genrsa -out httpd.key 1024?
#使用上面的私鑰創建證書
openssl req -new -x509 -key httpd.key -out httpd.crt -days 3650
將私鑰和證書的路徑填入/etc/nginx/nginx.conf中的如下字段,這些字段默認是注釋掉的,需要去掉注釋
訪問https://centos19發現證書錯誤
查看證書詳情可以看到是由centos19自己頒發的證書,并且不受信任
添加信任可以直接將3.4.3中生成的證書拷貝到windows01中進行安裝,或者直接在網頁中查看證書時安裝(這種方式在有些情況下可能不適用)。下面介紹一下第二種方式
如圖查看證書,安裝證書---下一步
選擇存儲位置為“受信任的根證書頒發機構”
安裝完成之后,就添加了對centos19的信任了
重新訪問網頁查看發現沒有報錯了
?
創建所需的目錄和文件,這些文件目錄的配置都在/etc/pki/tls/openssl.conf中定義
然后按照3.1中的方法創建CA的私鑰和證書如下
#創建私鑰
openssl genrsa -out /etc/pki/CA/private/cakey.pem 4096?
#使用上面的私鑰創建證書,這個證書被稱為根證書,一臺電腦將這個證書導入到“受信任的根證書頒發機構”后就相當于信任的這個CA
openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -out /etc/pki/CA/cacert.pem -days 3650
#在centos19上生成私鑰
openssl genrsa -out httpd.key 4096
#在centos19上生成證書申請文件
openssl req -new -key httpd.key -out httpd.csr -days 3650
#編輯nginx配置文件/etc/nginx/nginx.conf,將新申請的私鑰和證書綁定到nginx
使配置生效
Nginx -s reload
訪問https://centos19發現證書不信任
查看證書發現證書是由centos18頒發給centos19的,證明是CA頒發的證書
將3.4.7中CA生成的自簽名證書文件cakey.pem拷貝到windows01上,但是需要將后綴名修改為crt,將這個證書文件導入到“受信任的根證書頒發機構”
打開這個文件并導入,如下圖可以看出該根證書文件的確是由CA(centos18)頒發給自己的。
做完該操作之后就信任了CA了,以后CA頒發的所有證書都不用再單獨做信任關系了。
完成上一步操作之后,再次訪問頁面已經沒有證書警告了
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。