Windows.OpenSSL生成ssl证书配置到nginx

一、下载OpenSSL程序安装 到E:\soft\OpenSSL-Win64

二、打开一个CMD控制台窗口,设置好openssl.cnf路径

E:
cd E:\soft\OpenSSL-Win64\bin
set OPENSSL_CONF=E:\soft\OpenSSL-Win64\bin\openssl.cnf

三、在当前目录 E:\soft\OpenSSL-Win64\bin 里创建两个子目录

mkdir certs
mkdir private

生成一个随机数

openssl rand -out private/.rand 1000

四、生成根证书

根证书是用于证书签发的,证书的签发机构都有自己的根证书。他们的根证书一般已经打包到浏览器的受信任的根证书目录里了,我们自己签发的需要手工安装到这个目录。

4.1 生成根证书私钥文件(pem文件)

OpenSSL使用PEM(Privacy Enbanced Mail)格式来保存私钥,生成私钥的命令如下:

openssl genrsa -aes256 -out private/cakey.pem 1024

这一步会提示输入密码,

Enter pass phrase for private/cakey.pem:
请输入一个容易记忆的密码,以后产生其它文件时需要输入。我输入了:123456

该命令的相关参数解释如下:
 

该命含义如下:

genrsa: 使用RSA算法产生私钥
-aes256: 使用256位密钥的AES算法对私钥进行加密
-out: 输出文件的路径
1024: 指定私钥长度

4.2 生成根证书签发申请文件(csr文件)
这一步需要使用上一步生成的私钥(pem文件),所以你需要记住上一步自己设置的密码。
生成证书请求文件(csr文件)的命令如下:
 

openssl req -new -key private/cakey.pem -out private/ca.csr -subj "/C=CN/ST=Shanghai/L=Shanghai/O=Mediasoft/OU=Mediasoft/CN=Mediasoft"

该命令含义如下:

req: 执行证书签发命令
-new: 新证书签发请求
-key: 指定私钥路径,这个是上一步产生的key文件
-out: 输出的csr文件的路径,这个是即将产生的请求文件,需要用这个文件来产生证书
-subj: 证书相关的用户信息(subject的缩写),

-subj 用于设置 Subject Name
其中 C 表示 Country or Region
ST 表示 State/Province
L 表示 Locality
O 表示 Organization
OU 表示 Organization Unit
CN 表示 Common Name

4.3 签发根证书(cer文件)

用上一步生成的csr,可以自己签发根证书:

openssl x509 -req -days 3650 -sha1 -extensions v3_ca -signkey private/cakey.pem -in private/ca.csr -out certs/ca.cer

该命令的相关参数如下:

x509: 生成x509格式证书
-req: 输入csr文件
-days: 证书的有效期(天)
-sha1: 证书摘要采用sha1算法
-extensions: 按照openssl.cnf文件中配置的v3_ca项添加扩展
-signkey: 签发证书的私钥,第一步生成的Key文件
-in: 要输入的csr文件,上一步生成的csr文件
-out: 输出的cer证书文件

将在certs目录里生成的ca.cer根证书文件,根证书文件可以用于再次签发server证书,即用于nginx的服务器端证书,或client证书。 

根证书通常是用于证书签发机构签发证书与分发到支持的客户端的,例如分发到Chrome浏览器的安装程序里,大多数情况下,你无法让Google等浏览器厂家将你的根证书安装到它们浏览器的证书根目录 ,但可以自己手工安装刚才签发的根证书。手工安装步骤:步骤 1-〉2-〉3-〉4如下:

 五、用根证书签发server端证书

5.1 生成服务端证书私钥

openssl genrsa -aes256 -out private/server.key 1024openssl rsa -in private/server.key -out certs/server.key

5.2 生成请求文件

openssl req -new -key private/server.key -out private/server.csr -subj "/C=CN/ST=myprovince/L=mycity/O=myo/OU=myou/CN=mycn"

-subj 用于设置 Subject Name
其中 C 表示 Country or Region
ST 表示 State/Province
L 表示 Locality
O 表示 Organization
OU 表示 Organization Unit
CN 表示 Common Name

5.3 使用根证书签发服务端证书

openssl x509 -req -days 7304 -CA certs/ca.cer -CAkey private/cakey.pem -CAserial ca.srl -CAcreateserial -in private/server.csr -out certs/server.crt

这里有必要解释一下这几个参数:

-CA:指定CA证书的路径,为第四步生成的CA证书
-CAkey: 指定CA证书的私钥路径
-CAserial: 指定证书序列号文件的路径
-CAcreateserial: 表示创建证书序列号文件(即上方提到的serial文件),创建的序列号文件默认名称为-CA,指定的证书名称后加上.srl后缀

 在x509指令中,有多种方式可以指定一个将要生成证书的序列号,可以使用set_serial选项来直接指定证书的序列号,也可以使用-CAserial选项来指定一个包含序列号的文件。所谓的序列号是一个包含一个十六进制正整数的文件,在默认情况下,该文件的名称为输入的证书名称加上.srl后缀,比如输入的证书文件为ca.cer,那么指令会试图从ca.srl文件中获取序列号,可以自己创建一个ca.srl文件,也可以通过-CAcreateserial选项来生成一个序列号文件。
 

六、使用server证书

如果是Nginx,将以上certs目录里生成的 server.key与server.crt复制到证书相关目录下并进行相关设置即可。

server {listen       443 ssl;server_name  i569.cn;ssl_certificate      ssl/server.crt;ssl_certificate_key  ssl/server.key;...
}

七:浏览器打开域名链接 显示不安全   

     NET::ERR_CERT_COMMON_NAME_INVALID错误。

可以使用扩展文件来在证书里嵌入扩展信息,例如DNS信息,IP信息,DNS信息的文件样本如下(手工生成的一个文件:private/server.dns.ext):

keyUsage = nonRepudiation, digitalSignature, keyEncipherment
extendedKeyUsage = serverAuth, clientAuth
subjectAltName=@SubjectAlternativeName[SubjectAlternativeName]
DNS.1=test.domain.com

  IP扩展信息的样本如下(手工生成的一个文件:private/server.ip.ext):

keyUsage = nonRepudiation, digitalSignature, keyEncipherment
extendedKeyUsage = serverAuth, clientAuth
subjectAltName=@SubjectAlternativeName[SubjectAlternativeName]
IP.1=172.0.0.1

嵌入DNS信息以支持解决Chrome浏览器备用名的命令如下:

openssl x509 -req -days 7304 -CA certs/ca.cer -CAkey private/cakey.pem -CAserial ca.srl -CAcreateserial -in private/server.csr -out certs/server.crt -extfile private/server.dns.ext

 -extfile   使用 server.dns.ext (域名访问)或者 server.ip.ext (ip 直接访问)

八:linux nginx 配置命令

查看nginx 执行文件地址  ps -ef|grep nginx
查看nginx.conf文件地址 locate  nginx.conf
测试配置文件 /usr/sbin/nginx  -tc  /etc/nginx/nginx.conf 
启动nginx /usr/sbin/nginx  -c  /etc/nginx/nginx.conf 
重启nginx /usr/sbin/nginx -s reload -c  /etc/nginx/nginx.conf 
停止nginx  kill -9 nginxPid

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/328961.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

pcl::io::

如下代码闪退: 闪退位置于: 解决方法: VS2019 PCL1.10.1 安装配置方法 - 知乎

Docker中swarm管理工具

Docker中swarm管理工具 1 安装swarm swarm是Docker自带的容器集群管理工具。 1.1 集群IP 主机名ip地址网卡名软件master192.168.108.201ens33Dockernode1192.168.108.202ens33Docker 修改主机名 # 管理节点,修改主机名 hostnamectl set-hostname master# 子节…

理想L9自动驾驶域控制器拆解

理想L9自动驾驶域控制器拆解 目录 理想L9自动驾驶域控制器拆解简介:1、SOC-Orin2、MCU-TC3973、交换机4、GMSL解串芯片5、存储 printf("欢迎关注公众号:车载嵌入式探索者,博主建立了一个车规级开发交流群, 感兴趣的朋友可以关…

Web安全-文件上传漏洞入门看篇就够了

★★免责声明★★ 文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与学习之用,读者将信息做其他用途,由Ta承担全部法律及连带责任,文章作者不承担任何法律及连带责任。 1、简介 任意文件上传漏洞是由于对上传文件未作过滤或过…

【深度学习:Domain Adversarial Neural Networks (DANN) 】领域对抗神经网络简介

【深度学习:Domain Adversarial Neural Networks】领域对抗神经网络简介 前言领域对抗神经网络DANN 模型架构DANN 训练流程DANN示例 GPT示例 前言 领域适应(DA)指的是当不同数据集的输入分布发生变化(这种变化通常被称为共变量变…

【Spring Cloud】关于Nacos配置管理的详解介绍

🎉🎉欢迎来到我的CSDN主页!🎉🎉 🏅我是Java方文山,一个在CSDN分享笔记的博主。📚📚 🌟推荐给大家我的专栏《Spring Cloud》。🎯🎯 &am…

Linux学习记录——삼십유 传输层TCP协议(1)

文章目录 1、TCP协议报文1、报头和有效载荷的分离2、TCP可靠性3、序号和确认序号4、16位窗口大小5、6个标志位和紧急指针 2、TCP可靠性1、应答机制2、超时重传机制3、连接管理机制握手挥手 3、流量控制 1、TCP协议报文 UDP属于TCP/IP协议族。 1、报头和有效载荷的分离 从头…

Unity中Shader雾效在场景中的调节技巧

文章目录 前言一、修改棋盘格Shader的Cull可以在属性面板控制1、在属性面板定义CullMode2、在SubShader中,使用CullMode3、这样就可以在不同剔除情况下使用棋盘格场景了 二、调节天际线颜色和雾融为一体1、在摄像机设置不渲染天空盒,渲染单一颜色2、采样…

qt自定义控件的封装

刚学了一个很有意思的东西,前面学了list,Tree,Table三大控件和一部分常用基础控件,但感觉没啥意思,就是用别人的直接用,刚学了一个自定义控件的封装,流程如下: 想把两个不相关的组件封装在一块,直接用ui不行,所以先新添加了qt设计师页面,新添加了一个SmallWidget *ui 在smal…

一篇五分生信临床模型预测文章代码复现——Figure 10.机制及肿瘤免疫浸润(十)——Cibersort——完结

之前讲过临床模型预测的专栏,但那只是基础版本,下面我们以自噬相关基因为例子,模仿一篇五分文章,将图和代码复现出来,学会本专栏课程,可以具备发一篇五分左右文章的水平: 本专栏目录如下: Figure 1:差异表达基因及预后基因筛选(图片仅供参考) Figure 2. 生存分析,…

Mybatis-Plus的条件构造器QueryWrapper UpdateWrapper详解

文章目录 1. 引言2. Mybatis-Plus简介3. QueryWrapper3.1 基本用法3.2 动态条件拼接3.3 Lambda表达式的高级用法 4. UpdateWrapper4.1 基本用法4.2 动态条件拼接4.3 Lambda表达式的高级用法 5. 拓展功能与未来展望5.1 动态SQL的使用5.2 自定义条件构造器 6. 总结 🎉…

DQL命令查询数据(三)

本课目标 掌握MySQL的多表查询 SQL语句的综合应用 多表连接查询 通过各个表之间共同列的关联性(例如:外键)来查询的 分类: 内连接(INNER JOIN) ,可简写为 JOIN;左外连接(LEFT OUTER JOIN),…