nginx https 单机设置自签名证书


nginx配置好后访问会提示不安全

 

这时候就需要配置ssl证书,一般都是购买或者申请的,如果是内网可以用自签名证书

 

前置条件要安装openssl,centos7.9应该默认安装

可以通过 以下指令查看版本

openssl version

首先安装nginx,创建目录,等会证书文件就放在这

mkdir /etc/nginx/ca

 

 

这里稍微说明一下ssl证书流程,除了一般的客户端和服务端还有一个ca机构,主要负责颁发证书和验证证书。当然我们离线自签名证书,这个ca也就在服务端了。

key是服务器上的私钥文件,用于对发送给客户端数据的加密,以及对从客户端接收到数据的解密
csr是证书签名请求文件,用于提交给证书颁发机构(CA)对证书签名
crt是由证书颁发机构(CA)签名后的证书,或者是开发者自签名的证书,包含证书持有人的信息,持有人的公钥,以及签署者的签名等信息

主要就是这三个文件,我们依次来生成

我们进入到之前的文件夹里执行

 openssl genrsa -des3 -out server.key 1024

这是生成key也就是私钥,用来负责加解密,这里要输入一个密码后面要用到

 

接下来生成csr,也就是请求文件

 openssl req -new -key server.key -out server.csr 

正规流程是将请求文件给ca机构来签名,我们自签名直接生成就好

接下来要需要依次输入国家,地区,城市,组织,组织单位,Common Name和Email,注意Common Name要和你域名一致

 

下一步就是生成证书

 openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt

 

最后为了方便使用,去掉私钥的密码

openssl rsa -in server.pass.key -out server.key

 

在/etc/nginx/nginx.conf加上以下内容

ssl_certificate /etc/nginx/ca/server.crt;
        ssl_certificate_key /etc/nginx/ca/server.key;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_prefer_server_ciphers on;
        ssl_session_cache shared:SSL:20m;
        ssl_session_timeout 180m;

 

 

 

这时候访问https

 

 发现还是提示,这是因为证书没导入客户端。

下载crt文件导入浏览器和电脑

 

*导入成功后刷新网站

 

 

 edge可以了但是chrome貌似还不行,估计要自建ca来了,之后研究(可能要域名而不是ip)

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM