当前位置:   article > 正文

【一】生成CA根证书、公钥、私钥指令(数字证书)

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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

生成客户端证书安装包:
将客户端证书文件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
  • 1
  • 2

生成后点击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
  • 1
  • 2
  • 3

四、生成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用公钥验证这个签名是否是我签发的

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

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

参考连接:
数字证书、公钥和私钥这三者之间的关系是什么

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/781034
推荐阅读
相关标签
  

闽ICP备14008679号