2024年11月

关于HTTPS客户端证书的相关信息如下:

  1. 客户端证书与服务器证书的区别

    • 客户端证书用于验证客户端的身份,而服务器证书用于验证服务器的身份。在TLS握手过程中,服务器证书向客户端证明网站的真实性,客户端证书则向服务器证明用户的身份。
  2. HTTPS双向认证流程

    • 在双向认证中,客户端和服务器都需要对方的证书来验证对方的身份。流程包括客户端发送其公钥证书给服务器,服务器使用根证书解密客户端证书以获取客户端公钥,然后双方使用对方的公钥加密通信。
  3. 客户端证书的生成

    • 客户端证书的生成包括生成私钥、创建证书请求文件(CSR),最后使用CA证书签署客户端证书。如果需要自签名证书,可以自行生成客户端证书和私钥。
  4. 客户端证书的应用

    • 客户端证书可以用于用户身份验证、访问安全系统、电子邮件中的数字签名以及代码签名等。
  5. 客户端证书的测试

    • 使用curl命令加上证书路径,可以直接测试服务器的HTTPS双向认证是否配置成功。
  6. 客户端证书的工作方式

    • 在SSL握手期间,服务器和客户端出示各自的证书。服务器通过检查签名与CA的公钥来验证客户端的证书。如果成功,则建立相互身份验证。
  7. SSL客户端认证的步骤

    • SSL客户端认证包括服务器发送Certificate Request报文要求客户端提供客户端证书,客户端发送客户端证书信息给服务器,服务器验证客户端证书。

以上信息提供了HTTPS客户端证书的基本概念、生成步骤、应用场景和测试方法。客户端证书在确保数据传输安全性和验证客户端身份方面发挥着重要作用。

自建HTTPS证书通常涉及到创建一个自签名的SSL/TLS证书,这个过程可以通过OpenSSL工具来完成。以下是一个基本的步骤来创建自签名的HTTPS证书:

1. 生成CA私钥

首先,你需要生成一个CA(Certificate Authority)的私钥。这个私钥将用于签署服务器证书。使用以下命令生成一个2048位的RSA私钥:

openssl genrsa -des3 -out ca.key 2048

2. 生成CA自签名证书

使用上一步生成的私钥,创建一个自签名的CA证书。这个证书将作为信任链的根证书:

openssl req -new -x509 -days 365 -key ca.key -out ca.crt

3. 生成服务器私钥和证书申请文件(CSR)

为你的服务器生成一个私钥和证书申请文件(CSR)。这个CSR将被发送到CA进行签名:

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

4. 使用CA根证书签名服务器证书

使用CA的私钥对服务器的CSR进行签名,生成服务器证书:

openssl x509 -req -days 365 -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out server.crt

5. 配置服务器使用自签名证书

将生成的服务器证书和私钥配置到你的Web服务器中。例如,如果你使用的是Nginx,配置文件可能如下:

server {
    listen       443 ssl;
    server_name  example.com;

    ssl_certificate      /path/to/server.crt;
    ssl_certificate_key  /path/to/server.key;

    location / {
        root   /usr/share/nginx/html;
        index  index.html index.htm;
    }
}

6. 信任自签名证书

由于自签名证书不是由受信任的CA颁发的,你需要将CA证书添加到客户端的信任存储中。在大多数操作系统中,这意味着将CA证书添加到浏览器或操作系统的信任存储中。

以下是一些购买HTTPS证书的选项和价格信息:

阿里云SSL证书价格

  • DV(域名型)

    • Digicert(原symantec)通配符证书:1700元/年
    • Rapid通配符证书:1256.30元/年
    • Globalsign通配符证书:5890.50元/年
    • Wosign通配符证书:2244.00元/年
    • vTrus通配符证书:2100.00元/年
  • OV(企业型)

    • Globalsign通配符证书:9133.60元/年
    • Geotrust通配符证书:4674.60元/年
    • Digicert(原symantec)通配符证书:28000.00元/年
    • CFCA通配符证书:10500.00元/年
    • vTrus通配符证书:8400.00元/年

腾讯云SSL证书价格

  • DNSPod

    • 单个域名DV证书:560元/年
    • 多个域名DV证书:960元/年(默认支持3个域名,附加域名单个200元)
    • 泛域名DV通配符证书:2260元/年
    • 单个域名EV证书:3600元/年
    • 多个域名EV证书:9600元/年(默认支持3个域名,附加域名单个1600元)
    • 单个域名OV证书:2600元/年
    • 多个域名OV证书:5560元/年(默认支持3个域名,附加域名单个1000元)
  • SecureSite

    • 单个域名OV证书:5600元/年
    • 单个域名OV Pro证书:8992元/年
    • 单个域名EV证书:8992元/年
    • 单个域名EV Pro证书:16800元/年

HTTPS证书的格式有多种,常见的包括PEM、DER、CRT、CER、KEY、CSR、PFX和JKS等。以下是这些格式的详细说明:

PEM(Privacy Enhanced Mail)

PEM格式是一种Base64编码的文本格式,通常用于存储证书和私钥。PEM格式的证书文件通常以-----BEGIN CERTIFICATE-----开头,以-----END CERTIFICATE-----结尾。PEM格式的私钥文件通常以-----BEGIN RSA PRIVATE KEY-----开头,以-----END RSA PRIVATE KEY-----结尾。

DER(Distinguished Encoding Rules)

DER格式是一种二进制格式,通常用于存储证书和私钥。DER格式的证书文件通常以.der.cer为扩展名。

CRT(Certificate)

CRT格式是一种二进制格式或文本格式,通常用于存储证书。CRT格式的证书文件通常以.crt为扩展名。

CER(Certificate)

CER格式是一种二进制格式或文本格式,通常用于存储证书。CER格式的证书文件通常以.cer为扩展名。

KEY(Private Key)

KEY格式是一种PEM格式的私钥文件,通常以.key为扩展名。

CSR(Certificate Signing Request)

CSR格式是一种包含证书持有人信息的文件,通常用于向证书颁发机构(CA)申请证书。CSR格式的文件通常以.csr为扩展名。

PFX(Personal Information Exchange)

PFX格式是一种二进制格式,通常用于存储包含证书和私钥的文件。PFX格式的文件通常以.pfx.p12为扩展名。

JKS(Java KeyStore)

JKS格式是一种Java环境专用的证书格式,通常用于存储Java应用程序的证书和私钥。

在选择HTTPS证书格式时,需要考虑服务器类型、应用程序需求以及证书颁发机构的要求。例如,Apache和Nginx服务器通常使用PEM格式的证书,而Windows Server中的IIS服务通常使用PFX格式的证书。

HTTPS(Hypertext Transfer Protocol Secure)认证流程涉及到多个步骤,包括证书的生成、验证和数据传输的加密。以下是HTTPS认证的详细流程:

1. 服务器生成密钥对

服务器首先生成一个私钥和一个公钥。私钥由服务器保管,不对外公开,而公钥则用于与客户端进行通信。

2. 服务器向认证机构(CA)申请证书

服务器将自己的公钥和相关的域名信息发送给认证机构(CA),申请数字证书。

3. 认证机构验证服务器信息

认证机构(CA)会对服务器提交的信息进行验证,确保服务器的合法性和域名的所有权。

4. 认证机构颁发证书

如果验证通过,认证机构(CA)会使用自己的私钥对服务器的公钥和相关信息进行签名,生成数字证书。

5. 服务器安装证书

服务器收到认证机构(CA)颁发的证书后,将其安装到服务器上。

6. 客户端请求服务器

客户端(如浏览器)向服务器发起HTTPS请求。

7. 服务器发送证书

服务器将自己的数字证书发送给客户端。

8. 客户端验证证书

客户端接收到服务器的证书后,会进行一系列的验证,包括:

  • 检查证书是否由受信任的CA颁发。
  • 检查证书是否在有效期内。
  • 检查证书的域名是否与请求的域名匹配。
  • 检查证书是否被吊销。

9. 客户端生成对称密钥

如果证书验证通过,客户端会生成一个对称密钥,用于后续的数据传输加密。

10. 客户端加密对称密钥

客户端使用服务器的公钥对生成的对称密钥进行加密,并将加密后的密钥发送给服务器。

11. 服务器解密对称密钥

服务器接收到客户端发送的加密后的对称密钥后,使用自己的私钥进行解密,得到对称密钥。

12. 数据传输加密

客户端和服务器现在都拥有了相同的对称密钥,它们将使用这个对称密钥对后续的数据传输进行加密和解密。

通过这个流程,HTTPS确保了数据传输的安全性和服务器的身份认证。在整个过程中,非对称加密用于密钥交换,而对称加密用于数据传输,这样可以在保证安全的同时提高传输效率。