前些天搭好了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连接即可,下面开始配置。
为什么要写这个配置,因为我在网上看了很多文档,最后没有一个是能够正确生成的!发现有些人直接复制别人的东西,也不管对不对,真心坑,于是有了这篇文章...
下载openssl(openssl-devel是openssl的开发包,可以用来建立修改依赖关系)
wget https://github.com/openssl/openssl/archive/OpenSSL-fips-2_0_11.tar.gz
解压编译然后进行安装,(我们主要讲证书生成,这里省略)
yum install openssl
cd /usr/local/nginx/conf/keys
openssl genrsa -des3 -out eguid.key 1024
Enter pass phrase for root.key: 输入密码
Verifying – Enter pass phrase for root.key: 重新输入密码
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 []:admin@mycompany.com 电子邮箱
A challenge password []: 最好不填
An optional company name []: 最好不填
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证书(服务器证书)
这里与根证书生成key是一样的,名字变一下就可以了
openssl genrsa –des3 -out server.key 1024
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 []:642209085@qq.com 电子邮箱,随便填
A challenge password []: 最好不输入
An optional company name []: 最好不输入
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
有密码就输入密码,下面进行客户端证书生成
openssl genrsa -des3 -out client.key 1024
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 []:642209085@qq.com 随便填
A challenge password []: 最好不输入
An optional company name []: 最好不输入
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
有密码输密码
openssl pkcs12 -export -in client.crt -inkey client.key -out client.pfx
输入密码,输入密码,输入密码
到这里客户端证书就生成完了。
简单解释一下几种证书文件的作用及用途:
server.crt和server.key是配置单向SSL时需要使用的证书文件;
client.crt是配置双向SSL时需要使用的证书文件;
client.pfx是配置双向SSL时需要客户端安装的证书文件。
补充:
有些地方要用到pem证书,可以用crt和key合并生成pem证书:
catserver.key server.crt > server.pem