2024年11月

HTTPS 安全证书(SSL/TLS 证书)是一种用于在网站和用户浏览器之间建立安全加密连接的数字证书。

它具有以下重要作用:

  1. 数据加密:对在网络中传输的数据进行加密,防止数据被窃取和篡改,保护用户的隐私和敏感信息,如登录凭据、信用卡号等。
  2. 身份验证:确认网站的真实身份,防止用户被欺诈性网站误导,增加用户对网站的信任。
  3. 提升搜索引擎排名:搜索引擎通常会对采用 HTTPS 的网站给予更高的排名。

HTTPS 安全证书有不同的类型和级别,以满足不同的需求和安全要求。常见的类型包括域名验证(DV)、组织验证(OV)和扩展验证(EV)证书。

如果您需要获取 HTTPS 安全证书,可以选择知名的证书颁发机构(CA),按照其要求的流程进行申请和配置。

2024年10种免费申请HTTPS证书的方法:

  1. FOXSSL.COM

    • FOXSSL提供易于申请的免费一年期SSL证书。打开 free.foxssl.com 申请90天免费SSL证书
  2. Let's Encrypt

    • Let's Encrypt是一个开源的证书颁发机构,提供免费的SSL/TLS证书,并通过自动化工具Certbot简化了证书的获取和更新过程。
  3. Cloudflare

    • Cloudflare提供免费的SSL/TLS证书以及其他CDN和安全服务。使用Cloudflare的服务,你可以轻松启用HTTPS,而无需在服务器上配置证书。
  4. ZeroSSL

    • ZeroSSL提供免费和付费的SSL证书服务。它使用ACME协议,与Let's Encrypt类似,但提供更友好的用户界面和额外的功能。
  5. SSL For Free

    • SSL For Free网站提供基于Let's Encrypt的免费证书,简单的用户界面,免费使用。
  6. Freenom

    • Freenom提供免费域名注册服务,并且支持获取免费的SSL证书。通过Freenom注册域名后,可以使用Let's Encrypt等服务生成SSL证书。
  7. Buypass

    • Buypass提供免费SSL证书,有效期为180天,并支持自动续期。
  8. Get HTTPS for Free

    • Get HTTPS for Free是一个简单的工具,用于生成Let's Encrypt证书,提供了用户友好的界面。
  9. Google Cloud Platform (GCP)

    • GCP提供免费的SSL证书,通过Google Cloud Load Balancing服务可以免费使用托管的SSL证书。
  1. 阿里云

    • 阿里云提供免费的个人测试证书(免费版),每个阿里云个人或企业用户每年可以一次性申请20张个人测试证书(免费版)。

HTTPS双向认证(Mutual TLS authentication)是一种安全机制,它要求在建立HTTPS连接的过程中,不仅服务器需要验证客户端的身份,客户端也需要验证服务器的身份。以下是HTTPS双向认证的基本原理和步骤:

1. 原理

在双向认证中,客户端和服务器都需要对方的公钥证书来进行身份验证。这个过程比单向认证多了几步,具体流程如下:

  1. 客户端发起HTTPS连接请求,将SSL协议版本的信息发送给服务器端。
  2. 服务器响应客户端请求,将本机的公钥证书(通常是server.crt)发送给客户端。
  3. 客户端验证服务器证书,读取公钥证书,取出服务器的公钥。
  4. 客户端生成随机数(密钥R),用服务器的公钥加密这个随机数形成密文,发送给服务器。
  5. 服务器解密密文,用自己的私钥(通常是server.key)解密这个密文,得到密钥R。
  6. 服务器验证客户端证书,要求客户端提供其公钥证书,服务器用同样的流程验证客户端证书的真实性。
  7. 双方使用密钥R进行通信,在双方都认证通过后,开始建立安全通信通道进行数据传输。

2. 配置Nginx实现双向认证

要在Nginx中配置双向认证,你需要:

  • 将服务器的公钥证书和私钥放置在Nginx的指定目录下。
  • 在Nginx配置文件中指定ssl_certificate和ssl_certificate_key指令,指向你的证书和私钥文件。
  • 配置客户端证书的路径,使用ssl_client_certificate指令指向客户端证书。
  • 启用ssl_verify_client指令来要求客户端在连接时提供证书。

配置示例如下:

server {
    listen 443 ssl;
    server_name your_domain.com;

    ssl_certificate /path/to/your/server.crt;
    ssl_certificate_key /path/to/your/server.key;
    ssl_client_certificate /path/to/your/ca.crt;  # 客户端证书
    ssl_verify_client on;  # 启用客户端证书验证

    # 其他SSL配置...
}

3. 生成HTTPS证书

如果你需要自己生成HTTPS证书,可以使用OpenSSL工具。以下是生成自签名证书和密钥的步骤:

  1. 生成私钥

    openssl genrsa -out server.key 2048
  2. 生成证书签名请求(CSR)

    openssl req -new -key server.key -out server.csr
  3. 生成自签名证书

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

这样,你就得到了私钥server.key和自签名证书server.crt,可以用于测试环境的HTTPS双向认证。

请注意,自签名证书不被浏览器信任,因此主要用于测试和开发环境。对于生产环境,建议从受信任的证书颁发机构(CA)获取证书。

生成HTTPS证书通常涉及到创建一个公钥/私钥对,以及一个证书签名请求(CSR),然后将CSR提交给证书颁发机构(CA)以获取签名的证书。以下是生成HTTPS证书的步骤:

1. 生成私钥(Private Key)

使用OpenSSL生成一个私钥。通常,我们使用RSA算法,长度至少为2048位:

openssl genrsa -out private.key 2048

2. 创建证书签名请求(CSR)

使用私钥生成CSR,过程中需要提供组织信息、常用名称(CN,通常是域名或IP地址)等信息:

openssl req -new -key private.key -out csr.csr

在命令执行过程中,系统会提示你输入组织名称、部门、常用名称(CN)等信息。如果你正在为IP地址申请证书,那么在CN中输入你的公网IP地址。

3. 提交CSR到CA

将CSR提交给CA。对于付费证书,CA会验证你的信息,并在验证通过后颁发签名的证书。对于免费证书,如Let's Encrypt,这个过程是自动化的。

4. 从CA获取签名的证书

如果使用付费服务,CA会提供下载链接。如果使用Let's Encrypt,可以使用Certbot等工具自动获取和续订证书。

5. 合并中间证书(如果需要)

有些CA会提供中间证书,需要将这些中间证书与你的签名证书合并,以便在服务器上使用。

6. 配置服务器

将私钥和合并后的证书(如果合并了中间证书)配置到你的服务器上。对于Nginx,配置可能如下:

server {
    listen 443 ssl;
    server_name your_domain_or_ip;

    ssl_certificate /path/to/your/fullchain.pem;
    ssl_certificate_key /path/to/your/private.key;

    # 其他SSL配置...
}

请确保将/path/to/your/替换为你的证书和私钥文件的实际路径。

7. 重启服务器

配置完成后,重启你的服务器以应用新的SSL设置。

8. 验证配置

使用浏览器访问你的网站,检查地址栏是否显示一个锁形图标,表明SSL加密已经启用。你也可以使用SSL检查工具,如SSL Labs的SSL Server Test,来验证你的SSL配置。

请注意,如果你的IP地址是动态的,那么你需要在IP地址变化时更新证书,因为证书是与特定的IP地址绑定的。对于动态公网IP,使用域名和通配符证书可能是更好的选择。

当 https 证书过期时,您可以考虑以下处理方式:
首先,您可以使用 httpsok 工具来进行证书的自动续签。它专为 Nginx、OpenResty 服务器设计,配置简单,能够在 1 - 3 分钟快速签发证书,支持多服务和多种品牌证书,还具有自动续签、自动部署、证书监控等功能。您可以登录其官网按照相关指引进行操作。

另外,如果您需要重新申请证书,以 foxssl.com 为例,您可以访问其官方网站注册账号,选择合适的证书类型并下单,提交相关信息并验证域名或 IP 所有权,等待证书签发,最后根据服务器环境安装证书。