nginx安装的时候需要支持:with-http_ssl_module 模块
查看nginx是否支持:/application/nginx/sbin/nginx -V
证书生成
免费证书可使用阿里云申请获取,这里采用本地生成证书来配置
- 安装openssl工具
yum install openssl yum install openssl-devel
- 生成证书
进入证书目录
创建本地私有密钥cd /application/nginx/conf/cert
按提示输入相关信息就可以openssl genrsa -out ssl.silly.com.key 2048
创建证书crtopenssl req -new -key ssl.silly.com.key -out ssl.silly.com.csr
创建证书pemopenssl x509 -req -days 1460 -in ssl.silly.com.csr -signkey ssl.silly.com.key -out ssl.silly.com.crt
openssl dhparam -out ssl.silly.com.pem 2048
nginx配置文件
server_name : 未配置的域名,根据实际需求修改
-
配置443端口
server { listen 443 ssl; server_name ssl.silly.com; ssl_certificate /application/nginx/conf/cert/ssl.silly.com.crt; ssl_certificate_key /application/nginx/conf/cert/ssl.silly.com.key; #ssl_dhparam /application/nginx/conf/cert/ssl.silly.com.pem; 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 html; index index.html index.htm; } }
由于ssl证书配置的路径比较长,在配置完成后,可采用cat查看文件内容及可检查路径是否配置正确
cat /application/nginx/conf/cert/ssl.silly.com.crt; cat /application/nginx/conf/cert/ssl.silly.com.key; cat /application/nginx/conf/cert/ssl.silly.com.pem;
-
将http重定向到https
server { listen 80; server_name ssl.silly.com; rewrite ^(.*)$ https://$host$1 permanent; location / { return 301 https://ssl.silly.com:443$request_uri; } }
-
检查配置文件
/application/nginx/sbin/nginx -t
-
加载配置文件
/application/nginx/sbin/nginx -s reload
-
效果展示
后话
- 443端口配置关于ssl的问题
在网上很多采用以下方式配置,在检查和加载配置文件的时候会报告警信息,这个跟nginx的版本信息相关,可根据nginx的版本实际信息采取相关的配置。server { listen 443 ; ssl on; ... }
- listen 443 后面未加ssl ,访问页面时,提示该网站无法提供安全链接错误信息