Nginx配置Https自定义签名证书
前置条件
在配置https之前请确保下面的步骤已经完成
1、服务器已经安装nginx并且通过http可以正常访问。
2、不会安装nginx的可以参考下这篇文章:Linux下nginx安装步骤
3、拥有ssl证书,没有的可以去阿里购买或者免费申请一年,或者使用自签名证书。
如果以上条件都满足了,接下来开始配置https
第一步:Nginx的ssl模块安装
在配置ssl证书之前,要确保你的nginx已经安装了ssl模块,一般情况下自己安装的nginx都是不存在ssl模块的。
这里先检查下自己是否存在ssl模块:
进入到你的nginx安装目录下面,我的目录是在(/usr/local/nginx)
进入到目录的sbin目录下,输入
# 注意这里是大写的V,小写的只显示版本号
./nginx -V
如果出现 --with-http_ssl_module
, 则已安装,下面的步骤可以跳过。
一般情况下都是不存在ssl模块的,接下来进入到你的解压缩后的nginx目录,注意这里不是nginx安装目录,是解压缩后的目录,我的是在(/usr/local/nginx-1.22.0),进入目录后,输入
./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module
接下来执行
#切记不要执行make install,否则会重新安装nginx
make
上述操作执行完成以后,目录下会出现objs
文件夹,文件夹内存在nginx文件
接下来使用新的nginx文件替换掉之前安装目录sbin下的nginx,注意这里的替换的时候可以先将之前的文件备份下,停掉nginx服务
#停止nginx服务
./nginx -s stop
#替换之前的nginx
cp /usr/local/nginx-1.8.1/objs/nginx /usr/local/nginx/sbin/
成功之后,进入到nginx安装目录下,查看ssl时候成功
#注意这里是大写的V,小写的只显示版本号
./nginx -V
#可以看到这里出现了--with-http_ssl_module 证明已经安装成功
提示:这里替换后在执行 -V命令如果提示权限不足,先给这个nginx文件提升下权限,通过指令修改,如下:
chmod 111 nginx
第二步:生成ssl证书
openssl在centos中是标配,所以直接在centos中操作,因为要多个域名和IP,故而需要编辑一个配置文件
1.创建配置文件req.cnf
# 定义输入用户信息选项的"特征名称"字段名,该扩展字段定义了多项用户信息。
distinguished_name = req_distinguished_name
# 生成自签名证书时要使用的证书扩展项字段名,该扩展字段定义了要加入到证书中的一系列扩展项。
x509_extensions = v3_req
# 如果设为no,那么 req 指令将直接从配置文件中读取证书字段的信息,而不提示用户输入。
prompt = no
[req_distinguished_name]
#国家代码,一般都是CN(大写)
C = CN
#省份
ST = gd
#城市
L = gz
#企业/单位名称
O = echohye
#企业部门
OU = echohye
#证书的主域名
CN = 192.168.11.111
##### 要加入到证书请求中的一系列扩展项 #####
[v3_req]
keyUsage = critical, digitalSignature, keyAgreement
extendedKeyUsage = serverAuth
subjectAltName = @alt_names
[ alt_names ]
IP.1 = 192.168.11.111
# IP.2 = 192.168.11.222
在放置该文件的目录下执行以下命令
openssl req -x509 -nodes -days 3650 -newkey rsa:2048 -keyout server.key -out server.crt -config req.cnf -sha256
openssl 命令参数说明
req 大致有3个功能:生成证书请求文件、验证证书请求文件和创建根CA
-x509 说明生成自签名证书
-nodes openssl req在自动创建私钥时,将总是加密该私钥文件,并提示输入加密的密码。可以使用"-nodes"选项禁止加密私钥文件。
-days 指定所颁发的证书有效期。
-newkey 实际上,"-x509"选项和"-new"或"-newkey"配合使用时,可以不指定证书请求文件,它在自签署过程中将在内存中自动创建证书请求文件
"-newkey"选项和"-new"选项类似,只不过"-newkey"选项可以直接指定私钥的算法和长度,所以它主要用在openssl req自动创建私钥时。
rsa:2048 rsa表示创建rsa私钥,2048表示私钥的长度。
-keyout 指定私钥保存位置。
-out 新的证书请求文件位置。
-config 指定req的配置文件,指定后将忽略所有的其他配置文件。如果不指定则默认使用/etc/pki/tls/openssl.cnf中req段落的值
会生成server.crt和server.key两个文件
第三步:服务器端配置证书(nginx)
server {
listen 8081 ssl;
server_name 192.168.11.131;
ssl_certificate /home/ssl/server.crt;
ssl_certificate_key /home/ssl/server.key;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 120m;
ssl_prefer_server_ciphers on;
ssl_session_tickets off;
ssl_stapling_verify on;
location /{
root html;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
记住修改nginx后,需要重新加载
./nginx -s reload
现在访问http://192.168.11.131:8081/
而访问https://192.168.11.131:8081/
这是因为客户端未配置自定义签名的证书
第四步:服务器端配置证书(nginx)
1.将生成的servie.crt
下载到客户端
2.双击servie.crt
开始安装,操作如下
3.导入完成
其它——证书删除方式
certmgr.msc
第五步:访问https
如果还是出现警告,可以清除一下浏览器缓存并重启浏览器再访问。
这只是比较入门的配置,更多功能 请继续学习!
Nginx配置Https(详细、完整)
openssl创建的自签名证书,使用自签发证书--指定使用多域名、泛域名及直接使用IP地址...
nginx https配置、多域名共享SSL证书、禁止ip访问、http强转https
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析