生成证书
1. 使用openssl生成密钥privkey.pem:
openssl genrsa -out privkey.pem 1024/2038
2. 使用密钥生成证书server.pem:
openssl req -new -x509 -key privkey.pem -out server.pem -days 365
证书信息可以随便填或者留空,只有Common Name要根据你的域名填写。
以我的个人网站为例Common Name (e.g. server FQDN or YOUR name) []: wuyanxin.com
也可以通过*.yourdomain.com
来匹配你的二级域名
配置nginx
server {listen 443;server_name youdomain.com;ssl on;ssl_certificate /path/to/server.pem;ssl_certificate_key /path/to/privkey.pem;...
}
复制代码
3) 修改配置并保存后,Nginx安装目录运行nginx.exe -s reload
命令可重启Nginx使配置生效。
4) 通过https:\\xxxx.com
方式访问你的网站,如果能够正常访问,浏览器左边出现绿色的标记或者出现锁的标记那就成功了。
几点注意事项:
1. 如果HTTPS方式访问网站出现无响应的情况,可以看看自己的服务器防火墙配置
,是不是需要将443
端口加到例外中去;
2. 注意自己xxx.pem
和xxx.key
的存放路径,区分相对路径和决定路径使用方式;
3. 通过Nginx
安装目录下的logs
文件夹中的access.log
和error.log
日志文件来进行排错;
4. 同一个Nginx
可以配置多个HTTPS
的域名,只需要将上面443
端口的监听配置复制一份加到配置文件中,然后修改好相应的server_name
、xxx.pem
和xxx.key
文件路径即可。
补充一点配置:
如果Nginx
配置了HTTPS
,那背后的Tomcat
就没有必要再进行配置了,另外,为了兼容原来80
端口的HTTP
方式的访问,可以将80端口的访问请求全部转发到443端口上,增加配置如下:
server {listen 80;server_name your-domain.com;location = / {rewrite ^(.*) https://your-domain.com/$1 permanent;}location / {rewrite ^(.*) https://your-domain.com/$1 permanent;}
}复制代码
验证配置,重启nginx
$ sudo nginx -t && sudo nginx -s reload
复制代码
信任证书
这时访问你的站点会得到一个不安全提示,因为你的证书不是一个有效的证书颁发机构颁发的。
这时需要我们手动信任证书。