1. 程式人生 > >nginx反向代理cas-server之2:生成證書,centOS下使用openssl生成CA證書(根證書、server證書、client證書)

nginx反向代理cas-server之2:生成證書,centOS下使用openssl生成CA證書(根證書、server證書、client證書)

前些天搭好了cas系統,這幾天一致再搞nginx和cas的反向代理,一直不成功,但是走http還是測試通過的,最終確定是ssl認證證書這一塊的問題,原本我在cas服務端裡的tomcat已經配置了證書,並且能夠使用了,但是現在我用nginx代理使用ssl與cas-server建立連線,就會失敗(看了網上的大神(是不是真的大神先不管)說是nginx不支援與後臺的加密連線的原因)。那麼既然我nginx代理了cas-server,那麼現在我nginx伺服器就擔任cas-server的角色,所以我需要把nginx作為ssl-server與cas-client作為ssl-client進行ssl連線,而nginx到cas-server則用http連線即可,下面開始配置。

為什麼要寫這個配置,因為我在網上看了很多文件,最後沒有一個是能夠正確生成的!發現有些人直接複製別人的東西,也不管對不對,真心坑,於是有了這篇文章...安靜

1、下載編譯安裝openssl:

下載openssl(openssl-devel是openssl的開發包,可以用來建立修改依賴關係)

wget https://github.com/openssl/openssl/archive/OpenSSL-fips-2_0_11.tar.gz

解壓編譯然後進行安裝,(我們主要講證書生成,這裡省略)

yum install openssl

2、生成根證書

2.1、先到要存放證書的路徑下

 cd /usr/local/nginx/conf/keys

2.2、生成證書金鑰檔案(key)

openssl genrsa -des3 -out eguid.key 1024

Enter pass phrase for root.key:  輸入密碼 
Verifying – Enter pass phrase for root.key: 重新輸入密碼

2.3、生成證書的申請檔案(csr)

openssl req -new -key eguid.key -out eguid.csr

Enter pass phrase for root.key: 輸入建立的密碼 

Country Name (2 letter code) [AU]:國家名,可以用代號
State or Province Name (full name) [Some-State]:省名


Locality Name (eg, city) []:城市名
Organization Name (eg, company) [Internet Widgits Pty Ltd]:MyCompany Corp.  公司名 
Organizational Unit Name (eg, section) []: 愛填不填
Common Name (eg, YOUR name) []:  不要輸入 
Email Address []:[email protected] 電子郵箱

A challenge password []: 最好不填
An optional company name []: 最好不填

2.4、生成根證書(crt)

openssl x509 -req -days 365 -sha1 -extensions v3_ca -signkey eguid.key -in eguid.csr -out eguid.crt 

Enter pass phrase for eguid.key:輸入之前你填的密碼

解釋一下:這裡是用前面兩個檔案(key、csr)生成365天有效期的crt證書。

到這裡呢,根證書就完成了,我這裡完全沒有任何問題,如果有問題可以找我。

----------------------------------------------------------------------------------------------------------------------------------------------

接下來建立server證書(伺服器證書)

3、生成server伺服器證書

3.1、生成server伺服器金鑰key

這裡與根證書生成key是一樣的,名字變一下就可以了 openssl genrsa –des3 -out server.key 1024

3.2、生成server 伺服器申請檔案csr

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

Country Name (2 letter code) [AU]: 國家名
State or Province Name (full name) [Some-State]: 省名
Locality Name (eg, city) []:市名
Organization Name (eg, company) [Internet Widgits Pty Ltd]:MyCompany Corp. 公司名 
Organizational Unit Name (eg, section) []: 可以不輸入 
Common Name (eg, YOUR name) []:www.eguid.cn 伺服器主機名,如果填寫不正確,瀏覽器提示無效證書,但不影響使用 
Email Address []:[email protected] 電子郵箱,隨便填

A challenge password []: 最好不輸入 
An optional company name []: 最好不輸入

3.3、根據前面的根證書以及剛生成的兩個檔案生成server伺服器證書

openssl x509 -req -days 365 -sha1 -extensions v3_req -CA eguid.crt -CAkey eguid.key -CAserial root.srl -CAcreateserial -in server.csr -out server.crt
有密碼就輸入密碼,下面進行客戶端證書生成

4、生成client客戶端證書

4.1、生成client客戶端key

openssl genrsa -des3 -out client.key 1024

4.2、生成client客戶端證書申請檔案csr

openssl req -new -key client.key -out client.csr

Country Name (2 letter code) [AU]: 國家名
State or Province Name (full name) [Some-State]: 省名
Locality Name (eg, city) []:市名
Organization Name (eg, company) [Internet Widgits Pty Ltd]:MyCompany Corp. 隨便填
Organizational Unit Name (eg, section) []: 可以不輸入 
Common Name (eg, YOUR name) []:隨便輸
Email Address []:[email protected] 隨便填

A challenge password []: 最好不輸入 
An optional company name []: 最好不輸入


4.3、根據根證書以及剛生成的兩個檔案生成client客戶端證書 crt

openssl x509 -req -days 365 -sha1 -extensions v3_req -CA eguid.crt -CAkey eguid.key -CAserial root.srl -CAcreateserial -in client.csr -out client.crt
有密碼輸密碼

4.4、生成client客戶端證書安裝包pfx

openssl pkcs12 -export -in client.crt -inkey client.key -out client.pfx
輸入密碼,輸入密碼,輸入密碼 到這裡客戶端證書就生成完了。

簡單解釋一下幾種證書檔案的作用及用途:

server.crtserver.key是配置單向SSL時需要使用的證書檔案;

client.crt是配置雙向SSL時需要使用的證書檔案;

client.pfx是配置雙向SSL時需要客戶端安裝的證書檔案。

補充: 有些地方要用到pem證書,可以用crt和key合併生成pem證書:

catserver.key server.crt > server.pem