nginx配置ssl证书(nginx配置ssl证书后,浏览器访问提示证书无效)
当前使用操作系统centos
1.安装nss-tools
sudo yum install nss-tools
2. 使用mkcert工具生成受信任的本地ssl证书
mkcert工具下载链接:
https://github.com/FiloSottile/mkcert/releases
或者linux命令下载
wget -O mkcert https://github.com/FiloSottile/mkcert/releases/download/v1.4.4/mkcert-v1.4.4-linux-amd64
3.使文件可执行
chmod +x mkcert-v1.4.4-linux-amd64
4.创建本地CA,加入并且默认加入可信任CA中
sudo ./mkcert-v1.4.4-linux-amd64 -install
5.生成证书,根据域名生成证书 -cert-file 证书放置位置文件 ;-key-file 证书key放置位置文件
sudo
./mkcert-v1.4.4-linux-amd64 -key-file
/home/mkcert/ssl/pro-key.pem -cert-file /home/mkcert/ssl/pro.pem 域名
6.证书生成完成
7.修改名字为需要的名字,例如pro-key.pem为pro-key.key,pro.pem为pro.key
8. 上传到nginx位置
9.修改nginx.conf配置文件
server下添加
listen 443 ssl; #监听端口
listen 8080 ssl; #监听端口
server_name aidog.supconit.com; #访问nginx的域名
port_in_redirect off;
ssl_certificate
/home/supcon/nginx/ssl/supconit.com.crt; #证书地址
ssl_certificate_key
/home/supcon/nginx/ssl/supconit.com.key; #证书地址
ssl_session_cache shared:SSL:1m; #设置ssl/tls会话缓存的类型和大小
ssl_session_timeout 5m; #客户端可以重用会话缓存中ssl参数的过期时间
ssl_ciphers HIGH:!aNULL:!MD5; #加密套件
ssl_prefer_server_ciphers on; #指定是否服务器密码优先客户端密码
注意出现以下问题解决办法:
一、出现上图问题原因为安装nginx时没有配置 http_ssl_module
解决:
1.查看当前nginx版本:nginx -V
如果没有安装时没有该标记的内容,代表没有安装http_ssl_module
2.去官网下载对应版本nginx或请求下载
wget https://nginx.org/download/nginx-1.21.0.tar.gz
3.解压:
tar -zxvf nginx-1.21.0.tar.gz
4.使用./configure生成Makefile文件,以便可以执行make:
./configure --prefix=/opt/nginx-1.21.0 --with-http_ssl_module
5.执行make命令:
make
Make完成会在文件夹里生成一个objs文件夹
6.切换到原先nginx安装sbin目录,备份内容:
mv nginx nginx_bak
7.把objs文件夹的nginx文件替换到原先nginx文件夹下:
mv nginx /usr/local/nginx/sbin
8.启动nginx
二、nginx想强制http请求转到https
配置文件中添加以下内容
#让http请求重定向到https请求
error_page 497 https://$host$uri?$args;
当 nginx 配置的站点只允许 https 访问时,我们却使用 http 去访问,此时 nginx 会报出 497 错误码。
三、想要https可以访问,http也可以访问,增加如下两个监听接口,https默认访问443,http默认访问80