# Nginx 颁发自签证书
#1.Nginx 颁发自签证书
对于CentOS-7 的系统,默认 nginx 的SSL配置路径是
/etc/pki/nginx/
建议先进入这个目录,然后再执行下文的生成操作,最后把nginx.key
移动到 private 目录中即可
首先,确保安装了OpenSSL库,并且安装Nginx时使用了 –with-http_ssl_module
参数。
1.1:进入生成证书的目录
cd /etc/pki/nginx/
1.2:使用openssl创建创建服务器私钥,输入相应提示的信息
openssl genrsa -des3 -out nginx.key 2048(nginx 是自己定义的,文件名而已)
输入密码后,再次重复输入确认密码。记住此密码,后面会用到
1.3:创建证书签名请求
openssl req -new -key nginx.key -out nginx.csr
1.4:清除以SSL启动Nginx时提示必须输入密钥
cp nginx.key nginx.key.org
openssl rsa -in nginx.key.org -out nginx.key
1.5:使用刚生成的私钥和CSR进行证书签名
openssl x509 -req -days 3650 -in nginx.csr -signkey nginx.key -out nginx.crt
1.6:移动私钥到 private 目录(情况由 Nginx 配置文件中的 ssl_certificate_key
决定)
# cd /etc/pki/nginx/
\cp -rf nginx.key private/
1.7: 在nginx 的 server{}
中加入以下配置(如果没有):
listen 443 ssl http2 default_server;
listen [::]:443 ssl http2 default_server;
ssl_certificate "/etc/pki/nginx/nginx.crt";
ssl_certificate_key "/etc/pki/nginx/private/nginx.key";
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 10m;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
#2. 常见问题处理
The plain HTTP request was sent to HTTPS port
Nginx
监听4441
端口使用https
协议,浏览器输入http://hostname:4441
时会报这样的错误。在使用 http 访问 https 时,就会报497
错误
用error_page 处理一下即可:
server {
listen 4441 ssl;
...
...
error_page 497 https://$host:4441;
}
Blocked loading mixed active content
<meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests">
PS: 对于我司系统来说,只要在 fs_web/index.html
中的 header 中增加上述描述信息即可,见下图