一、证书格式
常用证书格式:JKS(.keystore),微软(.pfx),OPSSL之PEM(.key + .crt),其中tomcat使用JKS格式,nginx使用PEM格式
二、openssl生成ssl证书
x509证书一般会用到三类文,key,csr,crt
- key 是私用密钥,通常是rsa算法。
- csr 是证书请求文件,用于申请证书。在制作csr文件的时,必须使用自己的私钥来签署申,还可以设定一个密钥。
- crt是CA认证后的证书文,签署人用自己的key给你签署的凭证。
1.key 的生成
生成有密码的key:
openssl genrsa -des3 -out server.key 2048
这样是生成rsa私钥,des3算法,openssl格式,2048位强度。server.key是密钥文件名。
生成没有密码的key:
openssl rsa -in server.key -out server.key
2.csr 的生成
openssl req -new -key server.key -out server.csr
有一个common name,可以写你域名
3.CA 的 crt 的生成
openssl req -new -x509 -key server.key -out ca.crt -days 3650
生成的 ca.crt 文件是用来签署下面的 server.csr 文件
4.crt 的生成
csr 文件必须有 CA 的签名才可形成证书
openssl x509 -req -days 3650 -in server.csr -CA ca.crt -CAkey server.key -CAcreateserial -out server.crt
5.证书合并
cat server.key server.crt > server.pem
6.nginx 配置 https
server {
listen 443 ssl;
listen [::]:443 ssl;
server_name www.example.com;
ssl on;
ssl_certificate /root/openssl/server.crt; # 证书所在的位置
ssl_certificate_key /root/openssl/server.key; # key所在的位置
location / {
root /usr/share/nginx/html;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}
server {
listen 80;
listen [::]:80;
server_name www.example.com;
rewrite ^ https://$http_host$request_uri? permanent;
}