搭建HTTPS服务
上一篇我们创建好了nginx的http服务,本篇我们说一下搭建https的操作!
https需要ssl证书,证书可以通过阿里云生成,也可以自生成私钥和证书。本篇从使用openssl工具 自生成私钥和证书 角度进行操作
一:介绍
私钥(key): 明文
公钥(csr) : 由私钥生成
证书 (crt) : 公钥 + 签名(自签名或者由CA签名)
签名: 使用私钥与公钥进行证书生成的过程称为签名
二:私钥
openssl genrsa -des3 -out privateKey.key 2048 //#使用ssl生成私钥( privateKey.key)
注意:1.私钥长度不能设置成1024位,必须2048位,不然nginx不能启动
2.记住使用的密码,后续还需要使用
三:公钥
openssl req -new -key privateKey.key -out server.csr //基于创建的privateKey.key私钥创建server.csr公钥
四:解密的私钥
openssl rsa -in privateKey.key -out privateKey.key.unsecure //基于privateKey.key私钥生成privateKey.key.unsecure的解密私钥
五:生成证书
-req指定要生成的证书是由证书请求 (CSR) 生成的。
-days为有效期365天
-in指定公钥。
-signkey指定私钥。
-out 指定生成的证书名为certificate.crt。
方法1:需要输入私钥密码
openssl x509 -req -days 365 -in publicKey.csr -signkey privateKey.key -out certificate.crt
//使用私钥和公钥生成certificate.crt签名证书
方法2:
openssl x509 -req -days 365 -in publicKey.csr -signkey privateKey.key.unsecure -out certificate.crt //使用解密私钥和公钥生成签名证书(certificate.crt)
六:配置证书
# 目录地址为nginx-ssl/nginx/conf.d/default.conf
server {
listen 443 ssl;
server_name localhost;
ssl_certificate /etc/nginx/cert/certificate.crt;
ssl_certificate_key /etc/nginx/cert/privateKey.key.unsecure;
ssl_session_timeout 5m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}
七:验证
浏览器输入 https://172.16.100.111/
到此 https搭建成功 !