openssl创建的自签名证书,使用自签发证书--指定使用多域名、泛域名及直接使用IP地址...
openssl创建的自签名证书,使用自签发证书--指定使用多域名、泛域名及直接使用IP地址
在开发环境及私有环境下需要使用SSL,于是创建自签发证书,而必须支持多域名、泛域名、直接IP访问
1. Nginx的ssl模块安装
详情步骤参考:https://www.cnblogs.com/haolb123/p/15030631.html
2. nginx加入systemd管理
在目录/lib/systemd/system中增加文件:nginx.service内容如下:
[Unit]
Description=nginx
After=network.target
[Service]
Type=forking
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/usr/local/nginx/sbin/nginx -s quit
PrivateTmp=true
[Install]
WantedBy=multi-user.target
systemctl enable nginx.service 设置开机启动。
3. 使用openssl生成证书自签名
openssl在centos中是标配,所以直接在centos中操作,因为要多个域名和IP,故而需要编辑一个配置文件,如下:
[root@centos7 ~]# vim req.cnf
# 定义输入用户信息选项的"特征名称"字段名,该扩展字段定义了多项用户信息。
distinguished_name = req_distinguished_name
# 生成自签名证书时要使用的证书扩展项字段名,该扩展字段定义了要加入到证书中的一系列扩展项。
x509_extensions = v3_req
# 如果设为no,那么 req 指令将直接从配置文件中读取证书字段的信息,而不提示用户输入。
prompt = no
[req_distinguished_name]
#国家代码,一般都是CN(大写)
C = CN
#省份
ST = Beijing
#城市
L = Beijing
#企业/单位名称
O = oyz
#企业部门
OU = oyz
#证书的主域名
CN = 192.168.8.190
##### 要加入到证书请求中的一系列扩展项 #####
[v3_req]
keyUsage = critical, digitalSignature, keyAgreement
extendedKeyUsage = serverAuth
subjectAltName = @alt_names
[ alt_names ]
DNS.1 = oyz.com
DNS.2 = *.oyz.com
DNS.3 = www.flymot.com
DNS.4 = *.oyz.com
IP.1 = 192.168.8.190
IP.2 = 192.168.1.190
[root@centos7 ~]# openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /usr/local/nginx/ssl/private.key -out /usr/local/nginx/ssl/nginx.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段落的值
4. 配置nginx
[root@centos7 ~]# vim /usr/local/nginx/conf/nginx.conf
server {
listen 8081 ssl;
server_name 192.168.8.190;
ssl on;
ssl_certificate /usr/local/nginx/ssl/nginx.crt;
ssl_certificate_key /usr/local/nginx/ssl/private.key;
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
ssl_prefer_server_ciphers on;
location / {
root html;
error_page 500 502 503 504 /50x.html;
index index.html index.htm;
}
}
5. 启动nginx
[root@centos7 nginx]# systemctl start nginx
[root@centos7 nginx]# ss -ant | grep 8081
LISTEN 0 128 *:8081 *:*
6. 在Windows中导入证书
7. 测试效果
参考链接:
https://www.cnblogs.com/f-ck-need-u/p/7113610.html
https://www.cnblogs.com/lzpong/p/13030886.html
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 清华大学推出第四讲使用 DeepSeek + DeepResearch 让科研像聊天一样简单!
· 推荐几款开源且免费的 .NET MAUI 组件库
· 实操Deepseek接入个人知识库
· 易语言 —— 开山篇
· 【全网最全教程】使用最强DeepSeekR1+联网的火山引擎,没有生成长度限制,DeepSeek本体