压在透明的玻璃上c-国产精品国产一级A片精品免费-国产精品视频网-成人黄网站18秘 免费看|www.tcsft.com

Apache SSL單雙向證書認證

  要求目標用戶(系統)安裝自己的CA根證書,效果是一樣的,還可以省下請權威CA簽發證書的費用

  下面就介紹如何創建自己的CA

  1、準備工作

  先在/etc/httpd/conf創建子目錄:

  private

  certificates

  其中private放的是私鑰和CSR(后面會介紹),certificates里放的就是證書了

  2、創建CA私鑰

  Openssl代碼 

  1.

  openssl genrsa -out private/ca.key.pem 2048

  通過這個命令,私鑰就創建好了,文件名是ca.key.pem

  不過基本上,看也是白看,反正我是看不懂。只知道私鑰里其實有2組數字,是用來形成公鑰的,最后也會包含在證書里

  另外,最后的.pem擴展名,是表示該私鑰用PEM編碼。實際上私鑰和證書都是用PEM編碼的,PEM只是一種編碼格式,不需要太在意。httpd可以直接處理這種編碼格式,只要知道證書和私鑰都有編碼,只是編碼是PEM還是PKCS的區別而已。就像"你好"可以用UTF-8編碼,也可以用GBK編碼一樣,內容是不變的

  3、創建CA簽名請求

  Openssl代碼 

  1.

  openssl req -new -key private/ca.key.pem -out private/ca.csr -subj "/C=CN/ST=SZ/L=SZ/O=kyfxbl/OU=kyfxbl/CN=*.kyfxbl.net"

  生成的簽名請求文件,是ca.csr

  4、自己簽發CA根證書

  Openssl代碼 

  1.

  openssl x509 -req -days 3650 -sha1 -extensions v3_ca -signkey private/ca.key.pem -in private/ca.csr -out certificates/ca.cer

  生成的ca.cer,就是最終的根證書了!這個文件非常重要,因為后續的服務端證書、客戶端證書,都是用這個CA簽發的,也要把它分發給客戶,讓他們導入到自己的瀏覽器或者系統中

  5、把根證書從PEM編碼轉為PKCS編碼

  Openssl代碼 

  1.

  openssl pkcs12 -export -cacerts -inkey private/ca.key.pem -in certificates/ca.cer -out certificates/ca.p12

  得到的ca.p12就是轉碼后的CA根證書,在不能直接用ca.cer的時候,就用ca.p12代替

  六、簽發服務端證書

  現在CA根證書和私鑰都有了,就可以開始簽發服務端證書了(簽發請求ca.csr是過程文件,有了cer就不再需要它了,要刪掉也可以)。下面的命令和簽發CA證書時都差不多,但是參數上有區別

  1、創建服務端私鑰

  Openssl代碼 

  1.

  openssl genrsa -out private/server.key.pem 2048

  2、創建服務端證書簽發請求

  Openssl代碼

  1.

  openssl req -new -key private/server.key.pem -out private/server.csr -subj "/C=CN/ST=SZ/L=SZ/O=kyfxbl/OU=kyfxbl/CN=www.kyfxbl.net"

  和ca.csr的區別在于,這里的CN不是*.kyfxbl.net,而是www.kyfxbl.net,因為我現在是在為www.kyfxbl.net申請證書

  3、利用CA根證書,簽發服務端證書

  Openssl代碼 

  1.

  openssl x509 -req -days 3650 -sha1 -extensions v3_req -CA certificates/ca.cer -CAkey private/ca.key.pem -CAserial ca.srl -CAcreateserial -in private/server.csr -out certificates/server.cer

  這里和前面自己簽發CA證書時,參數區別就比較大了,最后得到的server.cer,就是服務端證書

  七、測試單向認證

  接下來用https://localhost來訪問,瀏覽器報警:

  Apache SSL單雙向證書認證

  這里就是前面創建CSR時,輸入的CN的作用,這個證書是為www.kyfxbl.net申請的,這里請求的地址卻是localhost,不匹配所以報錯。為了能用www.kyfxbl.net這個主機名來訪問,就需要改一下/etc/hosts文件:

  127.0.0.1       localhost

  192.168.1.102   www.kyfxbl.net

  然后就可以用www.kyfxbl.net來訪問了,再試一下:https://www.kyfxbl.net/

  這次瀏覽器還是告警,但是告警信息變了:

  Apache SSL單雙向證書認證

  證書信息如下:

  Apache SSL單雙向證書認證

  可以看到這個證書是由*.kyfxbl.net這個CA頒發的,瀏覽器不認識,所以不信任由這個CA簽發的所有證書。接下來就需要把ca.cer導入瀏覽器。這里直接導入server.cer也是可以的,但是后面如果又創建一個網站比如說www2.kyfxbl.net,那么又不行了。所以最好的辦法是直接導入CA根證書,那么后續只要是用這個根證書簽發的證書,瀏覽器都會信任

  再次訪問,可以看到成功了,瀏覽器不告警,并且URL欄前面打了一個綠勾

  Apache SSL單雙向證書認證

  八、配置雙向認證

  如果要配置服務器只允許合法的用戶訪問,就需要配置雙向認證

  配置為雙向認證之后,除了服務端要發證書給客戶端之外,客戶端也要發客戶端證書到服務端,服務端認證通過,才允許訪問

  Httpd代碼 

  1.

  SSLCACertificateFile "/etc/httpd/conf/ca.cer"

  2.

  SSLVerifyClient require

  3.

  SSLVerifyDepth  10

  在單項認證的基礎上,再配置以上3個參數

  SSLCACertificateFile,這個意思是當客戶端發來客戶端證書的時候,httpd用哪個CA根證書校驗它

  配置好了,還不能重啟,因為現在客戶端證書還沒做好

  這里要說明一下,客戶端證書是怎么來的

  有2種方式:

  第一種,客戶端也自己CA,然后簽發證書給自己。把客戶端的CA根證書發過來,配置成SSLCACertificateFile。這在互聯網應用里基本是不可能的,安全和管理都是問題。但是在企業應用里,還是比較常見的,雙方互相交換CA根證書

  第二種,就用剛才服務端的CA根證書,簽發一個客戶端證書,發給用戶,用戶每次用這個證書來發請求,像銀行,支付寶等等,用的是這種方式

  當然理論上其實還有一種辦法,就是客戶自己去找權威CA簽證書,但是這個是不可能的,因為很麻煩,找CA簽也非常貴

  九、簽發客戶端證書

  1、創建客戶端私鑰

  Openssl代碼 

  1.

  openssl genrsa -out private/client.key.pem 2048

  2、創建客戶端證書簽發請求

  Openssl代碼 

  1.

  openssl req -new -key private/client.key.pem -out private/client.csr -subj "/C=CN/ST=SZ/L=SZ/O=kyfxbl/OU=kyfxbl/CN=kyfxbl"

  3、利用CA根證書,簽發客戶端證書

  Openssl代碼 
  1.

  openssl x509 -req -days 3650 -sha1 -extensions v3_req -CA certificates/ca.cer -CAkey private/ca.key.pem -CAserial ca.srl -CAcreateserial -in private/client.csr -out certificates/client.cer

  這里和簽發server.cer基本是一樣的

  4、把客戶端證書轉換成p12格式

  Openssl代碼 

  1.

  openssl pkcs12 -export -clcerts -inkey private/client.key.pem -in certificates/client.cer -out certificates/client.p12

  這步是必須的,因為稍后就需要把客戶端證書導入到瀏覽器里,但是一般瀏覽器都不能直接使用PEM編碼的證書

  十、測試雙向認證

  然后再次訪問https://www.kyfxbl.net/,結果這次不是警告,而是直接報錯:

  Apache SSL單雙向證書認證

  接下來要把client.p12導入到瀏覽器里

  導入前:

  Apache SSL單雙向證書認證

  導入的時候會要求輸入密碼,這是為了避免有人偷偷拷貝了別人的客戶端證書,偽裝成合法用戶:

  Apache SSL單雙向證書認證

  導入后:

  Apache SSL單雙向證書認證

  然后再次訪問,瀏覽器會要求選擇證書。這個步驟是通過雙向認證訪問網站時必須的,但是平時訪問銀行、支付寶的時候貌似沒有,這是因為這些網站為了簡化用戶的操作,都會要求用戶安裝什么“安全控件”,控件自動選擇了證書

  Apache SSL單雙向證書認證

  點擊確定,訪問成功!

    文章來源:http://josion.blog.51cto.com/3161337/1589829

 

上一篇:安卓防火墻 PS DroidWall

下一篇:Centos系統下OpenVPN安裝配置