nginx https
一、制作证书
1、certbot 工具
Introduction — Certbot 1.31.0 documentation (eff-certbot.readthedocs.io) 操作说明
配置自动续期的免费通配符SSL证书 - 轶哥 (wyr.me)
2、生成自签名证书
#!/bin/sh # create self-signed server certificate: read -p "Enter your domain [www.example.com]: " DOMAIN echo "Create server key..." openssl genrsa -des3 -out $DOMAIN.key 1024 echo "Create server certificate signing request..." SUBJECT="/C=CN/ST=BeiJing/L=Haidian/O=private/OU=zhangsan/CN=$DOMAIN" openssl req -new -subj $SUBJECT -key $DOMAIN.key -out $DOMAIN.csr echo "Remove password..." mv $DOMAIN.key $DOMAIN.origin.key openssl rsa -in $DOMAIN.origin.key -out $DOMAIN.key echo "Sign SSL certificate..." openssl x509 -req -days 3650 -in $DOMAIN.csr -signkey $DOMAIN.key -out $DOMAIN.crt echo "TODO:" echo "Copy $DOMAIN.crt to /etc/nginx/ssl/$DOMAIN.crt" echo "Copy $DOMAIN.key to /etc/nginx/ssl/$DOMAIN.key" echo "Add configuration in nginx:" echo "server {" echo " ..." echo " listen 443 ssl;" echo " ssl_certificate /etc/nginx/ssl/$DOMAIN.crt;" echo " ssl_certificate_key /etc/nginx/ssl/$DOMAIN.key;" echo "}"
在当前目录下会创建出4个文件:
- www.test.com.crt:自签名的证书
- www.test.com.csr:证书的请求
- www.test.com.key:不带口令的Key
- www.test.com.origin.key:带口令的Key
3、权威证书颁发机构(CA, Certificate Authority)
是负责发放和管理数字证书的权威机构,并作为电子商务交易中受信任的第三方,承担公钥体系中公钥的合法性检验的责任。
有备案域名的话,腾讯云、阿里云都有免费的CA证书
SSL 证书 域名型(DV)免费 SSL 证书申请流程-证书申请-文档中心-腾讯云 (tencent.com)
4、Docker搭配免费SSL证书 - 轶哥 (wyr.me)
5、ZeroSSl 免费证书生成网站
https://manage.sslforfree.com/certificate/new
二、配置证书
1、nginx配置
user nginx; worker_processes auto; error_log /var/log/nginx/error.log; pid /run/nginx.pid; include /usr/share/nginx/modules/*.conf; events { worker_connections 1024; } http { log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; access_log /var/log/nginx/access.log main; sendfile on; tcp_nopush on; tcp_nodelay on; keepalive_timeout 65; types_hash_max_size 4096; include /etc/nginx/mime.types; default_type application/octet-stream; include /etc/nginx/conf.d/*.conf; server { listen 80 default_server; server_name _; rewrite ^(.*)$ https://$host$1 permanent; } server { listen 443 ssl; ssl_certificate /etc/nginx/ssl/local/nginx-selfsigned.crt; ssl_certificate_key /etc/nginx/ssl/local/nginx-selfsigned.key; ssl_dhparam /etc/nginx/ssl/dhparams.pem; error_page 404 /404.html; location = /404.html { } error_page 500 502 503 504 /50x.html; location = /50x.html { } location / { root /opt/web/nginx ; autoindex on; autoindex_exact_size off; } } }
ssl_dhparam:SSL 公共密钥小于1024的安全隐患
生成2048位的dhparam的证书
openssl dhparam -out dhparam.pem 2048
修改ningx 配置文件,在server下配置
ssl_dhparam path/dhparam.pem;
2、同一个80端口衍射两个不同域名的服务
# cat /etc/nginx/conf.d/ops.qi.ai.conf server { listen 80; server_name ops.qi.ai; location / { sendfile on; autoindex on; autoindex_exact_size on; autoindex_localtime on; charset utf-8,gbk; root /opt/moqi_web/nginx ; } } # cat /etc/nginx/conf.d/yum.qi.ai.conf server { listen 80; server_name yum.moqi.ai; location / { sendfile on; autoindex on; autoindex_exact_size on; autoindex_localtime on; charset utf-8,gbk; root /opt/moqi_web/yum ; } }
三、效果
1、连接安全 (有效的证书)
2、没有完全安全 (证书证书)
3、过期的安全配置 (无效、已过期、自签名)
4、可疑或危险网站 (网络仿冒或恶意软件)