使用openssl生成SSL证书

前言

最近项目的Restful接口开发的差不多了,要支持https请求,那就需要一个SSL证书,准备去狗爹上看看有没有便宜点的,自己买个试试。看了一眼(如下图),还是应该自己动手丰衣足食。


使用openssl生成SSL证书_第1张图片
image-20201013184814563

基础知识

  • SSL

    SSL证书也叫安全证书或者数字证书,SSL证书是数字证书的一种,跟驾驶证、护照、营业执照电子副本类似。SSL证书是一种国际通用的Web安全标准,主要通过对敏感数据加密来防止各种攻击非法读取重要信息,保证数据的完整性和安全性,避免受到数据劫持和钓鱼攻击等。

  • HTTPS

    HTTPS (全称:Hyper Text Transfer Protocol over SecureSocket Layer),是以安全为目标的 HTTP 通道,在HTTP的基础上通过传输加密和身份认证保证了传输过程的安全性 。HTTPS 在HTTP 的基础下加入SSL 层,HTTPS 的安全基础是 SSL,因此加密的详细内容就需要 SSL。

  • CA机构颁发SSL证书

    CA(Certificate Authority)就是电子认证的意思。权威可靠的CA机构有挺多的,比如国外的有:Comodo、RapidSSL、GeoTrust,国内的有:CFCA(中国人民银行联合12家银行建立的金融CFCA安全认证中zhi心)、CTCA(中国电信认证中心)
    CA机构颁发SSL证书是受信任的SSL证书,会被浏览器信任认可,安全加密服务与安全扫描相关CA配套服务。

  • 自签名SSL证书

    自己生成的SSL证书,不是CA机构颁发的SSL证书,就是自签名证书。自签名SSL证书不会被浏览器信任,数据被泄漏级劫持安全漏洞安全风险较高。可以在PC上安装自签名SSL证书对应的公钥证书,使浏览器信任认可。

    自签名的SSL证书也存在一些安全隐患:

    • 最容易受到SSL中间人攻击

    • 支持非常不安全的SSL V2.0协议

    • 使用不安全的1024位非对称密钥对

  • cer证书和pfx证书:

    项目的入口网关需要一张pfx证书,pfx证书同时包含了公钥信息和私钥信息。cer证书只包含公钥信息,提供给客户端使用。

openssl生成自签名证书

Linux系统自带openssl,可以登录任意Linux系统的机器操作。

主要步骤如下:

第一步:生成RSA私钥

openssl genrsa -des3 -out private-rsa.key 1024

  • -des3:生成的密钥使用des3方式进行加密。
  • -out private-rsa.key:将生成的私钥保存至private-rsa.key文件。
  • 1024为要生成的私钥的长度。

执行命令后,需要输入保护私钥文件的密码(输入密码即可,一般不超过6位)

image-20201013175337018

openssl req -new -x509 -key private-rsa.key -days 3650 -out public-rsa.cer

  • -new :说明生成证书请求文件
  • -x509 :说明生成自签名证书
  • -key :指定已有的秘钥文件生成秘钥请求,只与生成证书请求选项-new配合。
  • -days:证书有效天数
  • -out :-out 指定生成的证书请求或者自签名证书名称

执行命令后,需要输入证书的相关信息。

使用openssl生成SSL证书_第2张图片
image-20201013180143058

有两点需要注意

  • 第一个标红处输入上一步保护私钥文件的密码
  • 第二个标红处一定要输入使用pfx证书的服务器的IP

openssl pkcs12 -export -name test-alias -in public-rsa.cer -inkey private-rsa.key -out user-rsa.pfx

  • -export:指定了一个PKCS#12文件将会被创建。
  • -name:指定证书的名称。
  • -in:指定公钥和证书读取的文件。
  • -inkey:指定私钥文件的位置。
  • -out:指定输出的pkcs12文件

执行命令后,需要输入第一步保护私钥文件的密码以及导出密码。

image-20201013180843661

第四步:使用证书

至此,就会在当前目录下生成了三个证书文件,pfx证书上传到需要使用证书的服务器上使用,公钥证书交给客户端使用。

image-20201013181055665

你可能感兴趣的:(使用openssl生成SSL证书)