1.nginx本地ssl证书制作
制作ca证书
1.生成 ca.key CA 私钥
openssl genrsa -out ca.key 2048
2.生成证书请求文件 生成签名请求: 生成签署申请(注意除Common Name以外可以为空,Common Name必须为服务器的ip或域名)如www.yichen1.com
即可生成该站点的证书,同时也可以使用泛域名如 *.yichen1.com
来生成所有二级域名可用的网站证书。
openssl req -new -key ca.key -out ca.csr
需要依次输入
Country Name(国家名) CN
State or Province Name(州名或省名) sichuan
Locality Name(地区或城市名称) dazhou
Organization Name(机构名称) yichen.Ltd
Organizational Unit Name(组织单位名称) yichen.Ltd
Common Name(域名或IP) yichen1.com
Email Address(邮箱地址) [email protected]
Please enter the following 'extra' attributes
to be sent with your certificate request
(请输入以下“额外”属性
与您的证书请求一起发送)
A challenge password(访问密码,必须4位以上。) 1234
An optional company name(公司名称): baidu
这时候就会生成yichen1.csr这个文件。
这时候本地有两个文件 ca.csr ca.key
常用参数
-key 私钥文件(指明从哪个私钥文件中提取公钥创建证书签署请求)
-out 指定证书文件存放在位置
-new 生成新的证书签署请求;
-days n 证书有效时长,单位为“天”;
-x509 生成自签证书
3.用自己的私钥给自己签发根证书
openssl x509 -req -days 7304 -in ca.csr -signkey ca.key -out ca.crt
这时候会生成ca.crt 文件现在有san个文件了。
3. ca.crt 2. ca.csr 1. ca.key
4.创建 /etc/pki/CA/index.txt文件
用来跟踪已经颁发的证书。
touch /etc/pki/CA/index.txt
用CA 进行签名:
openssl ca -policy policy_anything -days 3652 -cert ca.crt -keyfile ca.key -in ca.csr -out yichen1.crt
如果报错
用来跟踪最后一次颁发的证书的序列号。
echo "01" > /etc/pki/CA/serial
解决方案: 修改 /etc/pki/tls/openssl.cnf 文件
# A few difference way of specifying how similar the request should look
# For type CA, the listed attributes must be the same, and the optional
# and supplied fields are just that :-)
policy = policy_match
# For the CA policy
[ policy_match ]
countryName = match
#stateOrProvinceName = match (将 match 改为 optional )
#organizationName = match (将 match 改为 optional )
stateOrProvinceName = optional
organizationName = optional
organizationalUnitName = optional
commonName = supplied
emailAddress = optional
再次执行:
openssl ca -policy policy_anything -days 3652 -cert ca.crt -keyfile ca.key -in yichen1.csr -out yichen1.crt
生成新的文件yichen1.crt
有4个文件了。为了方便。把ca.key重命名下
ca.crt ca.csr ca.key yichen2.crt
mv ca.key yichen1.key
Nginx 配置
以下是 Nginx 启用的部分配置,需要设置 ssl_certificate
和 ssl_certificate_key
指定证书和公钥,并且 listen 443,然后重新启动 Nginx,浏览器就可以用的 https://yourhost
的方式网页了。
server {
listen 80 ;
listen 443 ssl;
server_name yichen2.com;
root /usr/share/nginx/html;
index test.html ;
ssl_certificate /root/ssl/yichen1.crt;
ssl_certificate_key /root/ssl/yichen1.key;
return 301 https://$host$request_uri ;
}
重启nginx 可以测试下
curl -k -I https://yichen2.com