Nginx1.22实现内网自签证书 发表于 2024-04-06 | 更新于 2024-11-07
| 总字数: 904 | 阅读时长: 3分钟 | 浏览量:
Nginx1.22实现内网自签证书 HTTPS(全称:HyperText Transfer Protocol Secure)是HTTP(超文本传输协议)的安全版本。本质上,HTTPS在HTTP的基础上,通过SSL/TLS协议提供了数据加密、完整性保护和身份验证,以确保网络数据传输的安全性。HTTPS被广泛用于互联网上的安全通信,特别是在线交易和处理敏感信息时,本文以Nginx为例部署自签发https证书。
前情提要 本次实验仅仅用于实验测试有ssl需求的实验,生产环境建议不要用
本次实验环境是Rocky8.9(和centos 8 stream 大差不差)
安装nginx 1 2 3 4 5 6 7 dnf update -y dnf module list nginx dnf remove @nginx dnf module reset nginx dnf module install nginx:1.22 -y systemctl enable --now nginx nginx -V
查看是否有--with-http_ssl_module
--with-http_ssl_module
是 Nginx 配置选项之一,用于启用 Nginx 的 SSL 功能模块。当 Nginx 编译时包含了 --with-http_ssl_module
选项时,表示 Nginx 将支持处理 HTTPS 请求,即通过 SSL/TLS 加密协议保护数据传输。
安装openssl OpenSSL 是一个开放源代码的加密库,广泛用于安全通信、加密和解密数据。它提供了一组功能丰富的工具和库,用于处理安全通信所需的各种加密操作。
1 2 dnf install openssl dnf install openssl-devel
生成证书 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 #没有就创建sslkey文件夹 cd /etc/nginx/sslkey #创建本地私有密钥 openssl genrsa -out ssl.key 2048 #按提示输入即可 openssl req -new -key ssl.key -out ssl.csr ---------------------------------------------------------------- 国家名称(2字母代码)[XX]:CN Country Name (2 letter code) [XX]:CN 州或省名(全称)[]:Guangdong State or Province Name (full name) []:Guangdong 地区名称(如城市)[默认城市]:广州 Locality Name (eg, city) [Default City]:Guangzhou 组织机构名称(如公司)【默认公司有限公司】:qianyios Organization Name (eg, company) [Default Company Ltd]:qianyios 组织单位名称(如section) []:NONE Organizational Unit Name (eg, section) []:NONE 通用名称(例如,您的名字或服务器主机名)[]:qianyios Common Name (eg, your name or your server's hostname) []:qianyios 邮箱地址[]:abc@qq.com Email Address []:abc@qq.com 请输入以下“额外”属性 Please enter the following 'extra' attributes 与您的证书请求一起发送 to be sent with your certificate request 挑战密码[]:123456 A challenge password []:123456 可选的公司名称[]:NONE An optional company name []:NONE ---------------------------------------------------------------- #创建证书crt openssl x509 -req -days 1460 -in ssl.csr -signkey ssl.key -out ssl.crt #创建证书pem openssl dhparam -out ssl.pem 2048
Nginx配置 1 2 3 4 5 6 7 vi /etc/nginx/nginx.conf ........... include /etc/nginx/sslkey/*.conf; ........... 保存退出
在nginx默认配置下加上include /etc/nginx/sslkey/*.conf;
给ssl证书单独生成一个conf。
1 2 3 4 5 6 7 8 9 10 11 cat >> /etc/nginx/sslkey/ssl.conf <<"EOF" server { listen 443 ssl; ssl_certificate /etc/nginx/sslkey/ssl.crt; ssl_certificate_key /etc/nginx/sslkey/ssl.key; ssl_session_timeout 5m; ssl_protocols TLSv1.2; ssl_ciphers EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!KRB5:!aECDH:!EDH+3DES; add_header Strict-Transport-Security "max-age=31536000; includeSubDomains"; } EOF
重点!!!
在你需要的网站配置加入重定向至https,因为我们默认访问nginx页面的时候是http的,所以要重定向。现在我们模拟访问80端口的默认网页
1 2 3 4 5 6 7 8 9 10 11 12 13 vi /etc/nginx/nginx.conf include /etc/nginx/conf.d/*.conf; include /etc/nginx/sslkey/*.conf; server { listen 80; listen [::]:80; return 301 https://$host$request_uri; #就加这一句 server_name _; root /usr/share/nginx/html;
重启nginx
1 2 nginx -t nginx -s reload
这时候访问80网页,自签证书已经好了,只是不受信任而已
千屹博客旗下的所有文章,是通过本人课堂学习和课外自学所精心整理的知识巨著 难免会有出错的地方 如果细心的你发现了小失误,可以在下方评论区告诉我,或者私信我! 非常感谢大家的热烈支持!