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 10243.2、生成server 伺服器申請檔案csr
openssl req -new -key server.key -out server.csrCountry 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 10244.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.crt和server.key是配置單向SSL時需要使用的證書檔案;
client.crt是配置雙向SSL時需要使用的證書檔案;
client.pfx是配置雙向SSL時需要客戶端安裝的證書檔案。
catserver.key server.crt > server.pem