Windows下使用OpenSSL生成自签证书 (X.509证书)

Windows下使用OpenSSL生成自签证书 (X.509证书)

SSL是Secure Sockets Layer(安全套接层协议)的缩写,可以在Internet上提供秘密性传输。Netscape公司在推出第一个Web浏览器的同时,提出了SSL协议标准。其目标是保证两个应用间通信的保密性和可靠性,可在服务器端和用户端同时实现支持。已经成为Internet上保密通讯的工业标准。

SSL能使用户/服务器应用之间的通信不被攻击者窃听,并且始终对服务器进行认证,还可选择对用户进行认证。SSL协议要求建立在可靠的传输层协议(TCP)之上。SSL协议的优势在于它是与应用层协议独立无关的,高层的应用层协议(例如:HTTP,FTP,TELNET等)能透明地建立于SSL协议之上。SSL协议在应用层协议通信之前就已经完成加密算法、通信密钥的协商及服务器认证工作。在此之后应用层协议所传送的数据都会被加密,从而保证通信的私密性。

1、查看openssl的安装情况

没有配置环境变量的话,直接到程序的目录下执行

图片.png

图片.png

2、下载OpenSSL安装包,安装完后,目录结构如下:

图片.png


创建服务器私钥

openssl genrsa -out server.key 2048

图片.png


根据私钥生成证书申请文件csr

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

参数中C是Country(国家)、ST=是省(State or Province)、L=是城市(Location or City)、
O是(组织或企业Organization)、OU是(部门Organization Unit)、CN是(域名或IP:Common Name)

图片.png


去除私钥中的密码
在第1步创建私钥时设定了密码。而这个密码会带来一个副作用,那就是在每次启动Web服务器时,都会要求输入密码,这显然非常不方便。要删除私钥中的密码,操作如下:
openssl rsa -in server.key -out server.key
Enter pass phrase for server.key:
writing RSA key


生成证书文件(使用自签名 CA 生成 SSL 证书)

openssl x509 -req -in server.csr -out server.crt -signkey server.key -days 36500
这样就生成了有效期为:100年(36500天)的证书文件。

图片.png

查看crt证书

图片.png

图片.png


X.509证书包含三个文件:key,csr,crt。X.509是密码学一个标准,规范了公开秘钥认证、证书吊销列表、授权凭证、凭证路径验证算法等。我们需要用到的证书文件为:server.crt 和 server.key。

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







一、生成CA根证书
生成 CA 私钥:openssl genrsa -out ca.key 1024
因为是自签名,省略生成 证书签名请求csr 的过程,直接执行以下命令生成CA证书:openssl req -new -x509 -days 365 -key ca.key -out ca.crt
注:-days 365 指定有效期,
查看证书有效期:openssl x509 -in server.crt -noout -dates

二、每个证书持有人(Client、Server)都有一对公钥、私钥
Server端
(1)生成 服务器端 私钥:openssl genrsa -out server.key 1024
(2)利用 服务器端 私钥导出公钥:openssl rsa -in server.key -pubout -out server.pub.key 【用不上,可以不执行】
Client端
(1)生成 客户端 私钥:openssl genrsa -out client.key 1024
(2)生成 携带密码的客户端 私钥,用-des3加密:openssl genrsa -des3 -out client.key 1024
注:生成私钥可以指定私钥密码
(3)利用 客户端 私钥导出公钥:openssl rsa -in client.key -pubout -out client.pub.key 【用不上,可以不执行】

三、使用自签名的CA根证书签发Client、Server的数字证书
Server端
(1)向 CA 机构申请签名证书,在申请签名证书之前依然是创建自己的 CSR(证书签名请求) 文件:openssl req -new -key server.key -out server.csr -days 365
(2)向自己的 CA 机构申请证书,签名过程需要 CA 的证书和私钥参与,最终颁发一个带有 CA 签名的数字证书:openssl x509 -req -CA ca.crt -CAkey ca.key -CAcreateserial -in server.csr -out server.crt -days 365
Client端
(1)生成证书签名请求client.csr:openssl req -new -key client.key -out client.csr -days 365
(2)对上一步的 证书签名请求 进行签名,颁发一个带有CA签名的数字证书:openssl x509 -req -CA ca.crt -CAkey ca.key -CAcreateserial -in client.csr -out client.crt -days 365

查看证书信息:
    openssl x509 -in server.crt -noout -text
    openssl x509 -in client.crt -noout -text
    openssl x509 -in CA.crt -noout -text
查看client证书中的公钥信息:
    openssl x509 -in client.crt -pubkey
查看server证书中的公钥信息:
    openssl x509 -in server.crt -pubkey

生成客户端证书安装包:
将客户端证书文件client.crt和客户端证书密钥文件client.key,合并成客户端证书安装包client.pfx
(使用server.crt、server.key也是一样的,只要是服务器使用的CA证书签发的都可以)
    openssl pkcs12 -export -in client.crt -inkey client.key -out client.pfx
    openssl pkcs12 -export -in server.crt -inkey server.key -out server.pfx
成后点击client.pfx,安装到浏览器证书中(一直点击“下一步”)这样在浏览器中就可以https访问服务器
生成自定义证书(证书+私钥 格式):
ca.crt文件和ca.key可以合到一个文件里面,把2个文件合成了一个ca.crt.key.pem文件(直接拷贝过去就行了)
即手动生成了一个自定义证书(Windows下在拷贝时,需要将文档末尾空余一行)
    cat ca.crt ca.key > ca.crt.key.pem
    cat client.crt client.key > client.crt.key.pem
    cat server.crt server.key > server.crt.key.pem

四、生成CSR示例
下表可帮助您创建证书请求。
Name    姓名    描述    示例
Country Name    国家名称    代表国家的两个字母 ISO 缩写。    CN(中国)
State or Province Name    州或省    组织所在州或省的名称。此名称不可使用缩写。    ZJ(浙江)
Locality Name    所在地名称    组织所在城市的名称。    HZ(杭州)
Organization Name    组织名称    组织的法定全称。请勿缩写组织名称。    百度、腾讯、网易
Organizational Unit Name    组织部门    可选,用于提供额外的组织信息。    开发、测试、市场营销
Common Name    公用名    别名记录的完全限定域名。如果两者不能精确匹配,那么您会收到一条证书名称检测警告。    www.yourdomain.com
Email Address    电子邮件地址    服务器管理员的电子邮件地址    someone@yourdomain.com

➜ keys openssl req -new -key ca.key -out ca.csr
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter ‘.’, the field will be left blank.
-----
Country Name (2 letter code) [AU]:CN
State or Province Name (full name) [Some-State]:ZJ
Locality Name (eg, city) []:HZ
Organization Name (eg, company) [Internet Widgits Pty Ltd]:My CA
Organizational Unit Name (eg, section) []:
Common Name (e.g. server FQDN or YOUR name) []:apache.com/192.168.125.175
Email Address []:

注意
Organization Name :CA、客户端、服务器端的CSR文件的这一项不要写成一样的!!!可以随意写如:My CA, My Server, My Client

Common Name:这一项,是可以访问的域名,也可以配置为IP
【“验证域名”功能,验证的就是这个!!!!】

五、扩展
根据不同编码查看私钥方式如下:
PEM 编码格式:openssl rsa -in xxx.key -text -noout
DER 编码格式:openssl rsa -in xxx.key -text -noout -inform der

同一 X.509 证书的不同编码之间可以互相转换:
PEM 转为 DER:openssl x509 -in xxx.pem -outform der -out xxx.der
DER 转为 PEM:openssl x509 -in xxx.der -inform der -outform pem -out xxx.pem

六、一些概念说明
CA(Certification Authority)证书
如果用户想得到一份属于自己的证书,他应先向 CA 提出申请。 CSR
在 CA 判明申请者的身份后,便为他分配一个公钥,并且 CA 将该公钥与申请者的身份信息绑在一起,并为之签字后,便形成证书发给申请者。(CRT,证书含公钥)
CA证书即CA颁发的证书,包括:电子签证机关的信息、公钥用户信息、公钥、权威机构的签字和有效期等等。目前,证书的格式和验证方法普遍遵循X.509 国际标准。

CA证书(数字证书)由证书认证机构(CA)对证书申请者真实身份验证之后,用CA的根证书对申请人的一些基本信息以及申请人的公钥进行签名(相当于加盖发证书机构的公章)后形成的一个数字文件。CA证书(数字证书)就是经过CA认证过的公钥。

公钥、私钥
在 RSA 中有「公钥」和「私玥」两种密钥,其中私钥可以导出公钥,但公钥无法反推私钥
私钥一般情况都是由证书持有者在自己本地生成的,由证书持有者自己负责保管

签名加密、解密
签名:CA用私钥给服务签发证书,证书中携带签名,CA用公钥验证这个签名是否是我签发的

传输加密、解密
传输:用接收方提供的的证书(相当于公钥)对需要发送给对方的数据进行加密,接收方用自己的私钥对接收到的数据进行解密。

因此,如果说数字证书是电子商务应用者的网上数字身份证话,那么证书相应的私钥则可以说是用户的私章或公章


Windows下使用OpenSSL生成自签证书 (X.509证书)
http://www.zh-cjh.com/xinxianquan/2933.html
OpenSSL: 制作自签名证书
http://www.zh-cjh.com/xinxianquan/2950.html


HTTP、HTTPS、SSL、TLS、CA证书、CSR(列表、list、全)HTTPLIST、HTTPSLIST、SSLLIST、TLSLIST、CALIST、CSRLIST、pkilist
http://www.zh-cjh.com/wenzhangguilei/2199.html
文章归类、所有文章列表、LISTLIST
http://www.zh-cjh.com/wangzhangonggao/2195.html

1、本站资源长期持续更新,可加入VIP会员、资源全免费。
2、本资源基本为原创,部分来源其他付费资源平台或互联网收集,如有侵权请联系及时处理。
3、本站大部分文章的截图来源实验测试环境,请不要在生产环境中随意模仿,以免带来灾难性后果。
转载请保留出处:  www.zh-cjh.com珠海陈坚浩博客 » Windows下使用OpenSSL生成自签证书 (X.509证书)

作者: cjh


手机扫一扫,手机上查看此文章:

一切源于价值!

其他
加载中~

未雨绸缪、居安思危!

数据安全、有备无患!

注意操作、数据无价!

一切源于价值!