概述
1、创建私有CA证书颁发机构
2、生成证书
3、配置nginx
创建私有CA证书颁发机构:
cd /etc/pki/CA
(umask
077; openssl genrsa -out /etc/pki/CA/private/test.pem 4096)
openssl
req -new -x509 -key /etc/pki/CA/private/test.pem -out/etc/pki/CA/test.pem -days 3655
mkdir
-pv /etc/pki/CA/{certs,crl,newcerts}
touch /etc/pki/CA/{serial,index.txt}
echo 01 > /etc/pki/CA/serial
生成证书:
1、创建一个目录存放生成的私钥及根证书文件
mkdir /data/ssl
cd /data/ssl
2、创建一个私钥,并输入密码(必须输入且记住,且后续各个步骤可能都需要用到)
openssl genrsa -des3 -out test.key 1024
3、创建签名请求的证书(csr),需要输入的字段如下图红框:
openssl req -new -key test.key -out test.csr
----------------------------------------------------------------------------------------------------------------------------------
Country Name (2 letter code): 使用国际标准组织(ISO)国码格式,填写2个字母的国家代号。中国请填写CN。
State or Province Name (full name): 省份,比如填写Shanghai
Locality Name (eg, city): 城市,比如填写Shanghai
Organization Name (eg, company): 组织单位,比如填写公司名称的拼音
Organizational Unit Name (eg, section): 比如填写IT Dept
Common Name (eg, your websites domain name): 行使 SSL 加密的网站地址。请注意这里并不是单指您的域名,而是直接使用 SSL 的网站名称 例如:pay.abc.com。 一个网站这里定义是: abc.com 是一个网站; www.abc.com 是另外一个网站; pay.abc.com 又是另外一个网站。
Email Address: 邮件地址,可以不填
A challenge password: 可以不填
An optional company name: 可以不填
----------------------------------------------------------------------------------------------------------------------------------
4、生成CA证书和私钥
openssl req -new -x509 -keyout ca.key -out ca.crt
5、csr用ca签名生成证书
openssl ca -in test.csr -out test.crt -cert ca.crt -keyfile ca.key
配置nginx
upstream sslfpm {
server 47.93.62.145:80 weight=10 max_fails=3 fail_timeout=20s;
}
server {
listen 443;
server_name XX.XX.XX.XX
#为一个server开启ssl支持
ssl on;
#为虚拟主机指定pem格式的证书文件
ssl_certificate /data/ssl/test.crt;
#为虚拟主机指定私钥文件
ssl_certificate_key /data/ssl/test.key;
#客户端能够重复使用存储在缓存中的会话参数时间
ssl_session_timeout 5m;
#指定使用的ssl协议
ssl_protocols SSLv3 TLSv1;
#指定许可的密码描述
ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
#SSLv3和TLSv1协议的服务器密码需求优先级高于客户端密码
ssl_prefer_server_ciphers on;
location / {
#root html;
#index testssl.html index.html index.htm;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://XX.XX.XX.XXX/;
}
access_log /data/logs/ssl.log;
}