SSL介绍

SSL证书通过在客户端浏览器和 Web 服务器之间建立一条SSL安全通道(Secure socketlayer(SSL),SSL安全协议主要用来提供对用户和服务器的认证;对传送的数据进行加密和隐藏;确保数据在传送中不被改变,即数据的完整性,现已成为该领域中全球化的标准。由于 SSL 技术已建立到所有主要的浏览器和WEB服务器程序中,因此,仅需安装服务器证书就可以激活该功能了)。即通过它可以激活 SSL 协议,实现数据信息在客户端和服务器之间的加密传输,可以防止数据信息的泄露。保证了双方传递信息的安全性,而且用户可以通过服务器证书验证他所访问的网站是否是真实可靠。

流程介绍

1.创建根证书密钥文件(自己做CA)root.key;创建根证书的申请文件root.csr;创建一个自当前日期起为期十年的根证书root.crt。

2.创建服务器证书密钥server.key;创建服务器证书的申请文件server.csr;创建自当前日期起有效期为期两年的服务器证书server.crt。

3.创建客户端证书密钥文件client.key;创建客户端证书的申请文件client.csr;创建一个自当前日期起有效期为两年的客户端证书client.crt。

4.将客户端证书文件client.crt和客户端证书密钥文件client.key合并成客户端证书安装包client.pfx;保存生成的文件备用,其中server.crt和server.key是配置单向SSL时需要使用的证书文件,client.crt是配置双向SSL时需要使用的证书文件,client.pfx是配置双向SSL时需要客户端安装的证书文件。

.crt文件和.key可以合到一个文件里面,把2个文件合成了一个.pem文件。(直接拷贝过去就可以)

实际操作

生成CA证书

生成CA私钥(.key)–>生成CA证书请求(.csr)–>自签名得到根证书(.crt)(CA给自已颁发的证书)

  • 生成CA私钥 (key 文件)
1
$ openssl genrsa -out root.key 1024
  • 生成CA证书签名请求文件 (csr 文件)
1
$ openssl req -new -key root.key -out root.csr

交互信息:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
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]:Zhejiang ------------------------------- 证书持有者所在州或省份(可省略不填)
Locality Name (eg, city) []:Hangzhou ---------------------------------------------------- 证书持有者所在城市(可省略不填)
Organization Name (eg, company) [Internet Widgits Pty Ltd]:OpenMind.ltd --------------- 证书持有者所属组织或公司
Organizational Unit Name (eg, section) []:OpenMind ------------------------------------- 证书持有者所属部门(可省略不填)
Common Name (e.g. server FQDN or YOUR name) []:zhoujunwen.com -------------------------- 域名
Email Address []:joyven888@163.com ----------------------------------------------------- 邮箱(可省略不填)

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:. --------------------------------------------------------------- 自定义密码
An optional company name []: ------------------------------------------------------------ 可选公司名称
表1 CSR证书生成信息
字段 说明 示例
Country Name ISO国家代码(两位字符) CN
State or Province Name 所在省份 Zhejiang
Locality Name 所在城市 Hangzhou
Organization Name 公司名称 XYZ Technology Inc
Organizational Unit Name 部门名称 AI Dep
Common Name 申请SSL证书的域名 www.abc.xyz
Email Address 邮件地址,可选,不需要输入
A challenge password 不需要输入
An optional company name 可选公司名称
  • 生成证书文件 (crt 文件)
1
$ openssl x509 -req -days 3650 -in root.csr -signkey root.key -out root.crt

生成用户证书

生成私钥(.key)–>生成证书请求(.csr)–>用CA根证书签名得到证书(.crt)

生成服务端证书

1
2
3
4
5
6
# private key  
$ openssl genrsa -des3 -out server.key 1024
# generate csr
$ openssl req -new -key server.key -out server.csr
# generate certificate
$ openssl ca -in server.csr -out server.crt -cert root.crt -keyfile root.key

生成客户端证书

1
2
3
$ openssl genrsa -des3 -out client.key 1024   
$ openssl req -new -key client.key -out client.csr
$ openssl ca -in client.csr -out client.crt -cert root.crt -keyfile root.key

生成PEM格式

1
2
$ cat client.crt client.key> client.pem 
$ cat server.crt server.key > server.pem

文件扩展名说明

  • .key格式:私有的密钥
  • .csr格式:证书签名请求(证书请求文件),含有公钥信息,certificate signing request的缩写
  • .crt格式:证书文件,certificate的缩写
  • .crl格式:证书吊销列表,Certificate Revocation List的缩写
  • .pem格式:用于导出,导入证书时候的证书的格式,有证书开头,结尾的格式

免费证书

FreeSSL.org 是一个免费提供 HTTPS 证书申请、HTTPS 证书管理和 HTTPS 证书到期提醒服务的网站,旨在推进 HTTPS 证书的普及与应用,简化证书申请的流程。

生成证书

选择CSR

打开官网,输入需要进行登记的域名,点击“创建免费的SSL证书”,但不支持通配符,然后根据提示输入邮箱,选择证书类型、验证类型、CSR生成方式等信息。

关于CSR生成有三个选项:

  • 1.离线生成

    • 1、私钥本地加密存储更安全,自由选择iCloud、OneDrive、Dropbox、百度网盘备份加密库;
    • 2、公私钥自动合成,支持常见证书格式转换方便部署;
    • 3、支持部分WebServer一键部署,更便捷;
    • 4、需要安装keyManager2软件
  • 2.浏览器生成

    在浏览器支持 Web Cryptography 的情况下,使用浏览器根据用户的信息生成CSR文件。

  • 3.我有CSR

    如果您有 CSR 文件,您可以选择我有 CSR 并粘贴。我们将根据您的 CSR 颁发证书。CSR文件是以"-----BEGIN CERTIFICATE REQUEST-----“开头 和以”-----END CERTIFICATE REQUEST-----"结尾的字符串。

    可通过在线工CSR工具生成,也可以自己生成:

    1
    2
    $ openssl genrsa -des3 -out server.key 2048   
    $ openssl req -new -key server.key -out server.csr

    或者

    1
    openssl req -new -nodes -newkey rsa:2048 -keyout server.key -out server.csr

    免费证书CHINASSL 免费SSL证书

验证DNS

上面步骤选择完信息,填写好邮箱之后,点击创建,则出现DNS验证信息。

在域名解析服务中配置TXT记录:

记录类型 解析线路 主机记录 记录值 MX优先级 TTL
TXT 默认 _dnsauth 201906280714025bfkk6mup9247muyv4wuyd77vb5klf4oqqgk2up5q6hgsz0ms2 - 10分钟

然后点击验证,即可生成证书,下载或者在keyManager中导出即可用。