openssl生成自签名证书流程

1 数字证书概念

  • 在HTTPS的传输过程中,有一个非常关键的角色——数字证书,那什么是数字证书?又有什么作用呢?

  • 所谓数字证书,是一种用于电脑的身份识别机制。由数字证书颁发机构(CA)对使用私钥创建的签名请求文件做的签名(盖章),表示CA结构对证书持有者的认可。数字证书拥有以下几个优点:

  • 使用数字证书能够提高用户的可信度 数字证书中的公钥,能够与服务端的私钥配对使用,实现数据传输过程中的加密和解密

  • 在证认使用者身份期间,使用者的敏感个人数据并不会被传输至证书持有者的网络系统上 X.509证书包含三个文件:key,csr,crt。

    key【密钥/私钥 Private Key】是服务器上的私钥文件,用于对发送给客户端数据的加密,以及对从客户端接收到数据的解密
    csr【证书认证签名请求 Certificate signing request】是证书签名请求文件,用于提交给证书颁发机构(CA)对证书签名
    crt【证书 Certificate】是由证书颁发机构(CA)签名后的证书,或者是开发者自签名的证书,包含证书持有人的信息,持有人的公钥,以及签署者的签名等信息
    备注:在密码学中,X.509是一个标准,规范了公开秘钥认证、证书吊销列表、授权凭证、凭证路径验证算法等。

    -req 产生证书签发申请命令
    -newkey 生成新私钥 rsa:4096 生成秘钥位数
    -nodes 表示私钥不加密
    -sha256 使用SHA-2哈希算法
    -keyout 将新创建的私钥写入的文件名
    -x509 签发X.509格式证书命令。X.509是最通用的一种签名证书格式。
    -out 指定要写入的输出文件名
    -subj 指定用户信息
    -days 有效期(3650表示十年)

2 基本流程

  1. 创建一个虚拟的CA机构,生成一个证书,将来颁发给它人;
  2. 生成一个自己的密钥,然后填写证书认证申请csr,拿给上面的CA机构去签名;
  3. 于是就得到了自(自建CA机构认证的)签名证书

2.1 首先,虚构一个CA认证机构出来

yum install openssl -y
# 生成CA认证机构的证书密钥key
# 需要设置密码,输入两次
openssl>openssl genrsa -des3 -out ca.key 1024

# 去除密钥里的密码(可选)
# 这里需要再输入一次原来设的密码
openssl>openssl rsa -in ca.key -out ca.key

# 用私钥ca.key生成CA认证机构的证书ca.crt
# 其实就是相当于用私钥生成公钥,再把公钥包装成证书
openssl>openssl req -new -x509 -key ca.key -out ca.crt -days 365
# 这个证书ca.crt有的又称为"根证书",因为可以用来认证其他证书

2.2 其次,才是生成网站的证书

用上面那个虚构出来的CA机构来认证,免费

# 生成自己网站的密钥server.key
openssl>openssl genrsa -des3 -out server.key 1024

# 生成自己网站证书的请求文件
# 如果找外面的CA机构认证,也是发个请求文件给他们
# 这个私钥就包含在请求文件中了,认证机构要用它来生成网站的公钥,然后包装成一个证书
openssl>openssl req -new -key server.key -out server.csr

# 使用虚拟的CA认证机构的证书ca.crt,来对自己网站的证书请求文件server.csr进行处理,生成签名后的证书server.crt
# 注意设置序列号和有效期(一般都设1年)
openssl>openssl x509 -req -in server.csr -CA ca.crt -CAkey ca.key -set_serial 01 -out server.crt -days 365

至此,私钥server.key和证书server.crt已全部生成完毕,可以放到网站源代码中去用了。

你可能感兴趣的:(openssl生成自签名证书,https,ssl,网络)