nginx实现https访问(自建证书及认证证书)

注意!!首先在nginx安装时添加--with-http_ssl_module模块,否则将会报错,后续的添加模块请参考这篇文章

 


 

本文所提到是自建证书,要想真的还需要通过CA认证的证书才可以,可自行去购买,本文已于2020.11.19重新编辑,添加购买证书后的操作

1.自建证书:

复制代码
通过openssl命令(软件包:openssl ;openssl-devel) 1)创建私钥: openssl genrsa -out server.key 1024 2)证书请求: openssl req -new -out server.csr -key server.key  //填写信息,注意!!将Common Name (eg, your name or your server's hostname行填写成服务器的IP地址) 3)自签署证书: openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt  4)将证书变成浏览器支持的.p12格式 openssl pkcs12 -export -clcerts -in server.crt -inkey server.key -out server.p12
复制代码

 

修改nginx配置文件

 

复制代码
server { listen 80; listen 443 default ssl;  //这样可以设置一个虚拟主机同时支持HTTP和HTTPS server_name localhost;  //由于我是根据IP访问,所以这里不做修改 ssl_certificate /root/server.crt;  //指定证书文件 ssl_certificate_key /root/server.key;  //指定密钥文件 ssl_session_cache shared:SSL:1m; ssl_session_timeout 5m; ssl_protocols SSLv2 SSLv3 TLSv1;  //指定密码为openssl支持的格式 ssl_ciphers HIGH:!aNULL:!MD5; ssl_prefer_server_ciphers on;   location {     略   } }
复制代码

 

 

将自建证书加入到浏览器中(以Chrome为例)

路径:设置-设置-设置-高级-隐私设置和安全性-管理证书-导入

注意,这时候可能还会提示安全问题,点击 高级,选择继续即可进入

  补充:由于创建私钥后,每次开启nginx都需输入密码,用以下命令即可无需输入

 1 cp server.key server.key.org

2 openssl rsa -in server.key.org -out server.key 

2.经CA认证的证书

我是在阿里云上购买的证书,审核通过后根据自己的Web服务器来选择下载。下载完成后,zip包里有两个文件;一个.pem结尾的认证证书,一个是.key的秘钥文件

 

 

首先在nginx目录下的conf下创建cert文件夹并将下载的两个文件放进文件夹内

mkdir cert ls cert
burukku.com.pem burukku.com.key

nginx配置文件nginx.conf

善用nginx.conf中的include

复制代码
server { listen 443 ssl; #配置HTTPS的默认访问端口号为443。此处如果未配置HTTPS的默认访问端口,可能会造成Nginx无法启动。Nginx 1.15.0以上版本请使用listen 443 ssl代替listen 443和ssl on。 server_name www.burukku.com; root html; index index.html index.htm; ssl_certificate cert/burukku.com.pem; #证书的文件名称。 ssl_certificate_key cert/burukku.com.key; #证书的密钥文件名称。 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; } }
复制代码

3.问题总结

缺少模块

如果重启Nginx服务器出现the "ssl" parameter requires ngx_http_ssl_module报错,需要重新编译Nginx并在编译安装的时候加上--with-http_ssl_module配置。

文件地址错误

如果重启Nginx服务器出现

"/cert/3970497_pic.certificatestests.com.pem":BIO_new_file() failed (SSL: error:02001002:system library:fopen:No such file or directory:fopen('/cert/3970497_pic.certificatestests.com.pem','r') error:2006D080:BIO routines:BIO_new_file:no such file)

错误

需要去掉证书相对路径最前面的/

例如,需要去掉/cert/3970497_pic.certificatestests.com.pem最前面的/,使用正确的相对路径cert/3970497_pic.certificatestests.com.pem,也可以直接使用文件的绝对路径。


 


__EOF__

本文作者Burukku
本文链接https://www.cnblogs.com/yuan9910/p/11529878.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   开心burukku  阅读(4814)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示