欢迎光临
dockeryun一直在努力

自签名的SSL证书工作原理及创建

SSL证书工作原理

    1. 客户端提交https请求

    2. 服务器响应客户,并把证书公钥发给客户端

    3. 客户端验证证书公钥的有效性

    4. 有效后,会生成一个会话密钥

    5. 用证书公钥加密这个会话密钥后,发送给服务器

    6. 服务器收到公钥加密的会话密钥后,用私钥解密,回去会话密钥

    7. 客户端与服务器双方利用这个会话密钥加密要传输的数据进行通信

SSL证书文件介绍 

X.509证书包含三个文件:key,csr,crt

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

自签名证书的步骤

1.生成私钥

使用openssl工具生成一个RSA私钥

$ openssl genrsa -des3 -out server.key 2048

说明:生成rsa私钥,des3算法,2048位强度,server.key是秘钥文件名。

注意:生成私钥,需要提供一个至少4位的密码。

2.生成CSR(证书签名请求)

生成私钥之后,便可以创建csr文件了。

此时可以有两种选择。理想情况下,可以将证书发送给证书颁发机构(CA),CA验证过请求者的身份之后,会出具签名证书(很贵)。另外,如果只是内部或者测试需求,也可以使用OpenSSL实现自签名,具体操作如下:
生成私钥之后,便可以创建csr文件了。

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

此时可以有两种选择。理想情况下,可以将证书发送给证书颁发机构(CA),CA验证过请求者的身份之后,会出具签名证书(很贵)。另外,如果只是内部或者测试需求,也可以使用OpenSSL实现自签名,具体操作如下:

Country Name (2 letter code) [AU]:CN
State or Province Name (full name) [Some-State]:shengz
Locality Name (eg, city) []:shengz
Organization Name (eg, company) [Internet Widgits Pty Ltd]:test
Organizational Unit Name (eg, section) []:test
Common Name (e.g. server FQDN or YOUR name) []:test.com
Email Address []:test@test.com

4.删除私钥中的密码

在第1步创建私钥的过程中,由于必须要指定一个密码。而这个密码会带来一个副作用,那就是在每次Apache启动Web服务器时,都会要求输入密码,这显然非常不方便。要删除私钥中的密码,操作如下:

cp server.key server.key.org
openssl rsa -in server.key.org -out server.key

5.生成自签名证书

如果你不想花钱让CA签名,或者只是测试SSL的具体实现。那么,现在便可以着手生成一个自签名的证书了。

需要注意的是,在使用自签名的临时证书时,浏览器会提示证书的颁发机构是未知的。

$ openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt

说明:crt上有证书持有人的信息,持有人的公钥,以及签署者的签名等信息。当用户安装了证书之后,便意味着信任了这份证书,同时拥有了其中的公钥。证书上会说明用途,例如服务器认证,客户端认证,或者签署其他证书。当系统收到一份新的证书的时候,证书会说明,是由谁签署的。如果这个签署者确实可以签署其他证书,并且收到证书上的签名和签署者的公钥可以对上的时候,系统就自动信任新的证书。

6.安装私钥和证书

将server.key 和server.crt
放在nginx 或者apache 相关目录下

赞(0) 打赏
未经允许不得转载:DockerYun » 自签名的SSL证书工作原理及创建
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!

 

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏