生成 IIS 使用的免费证书(3 个月周期,可无限更新)

Let’s Encrypt 是一个非常安全且值得信赖的证书颁发机构(CA)。

它提供的 SSL/TLS 证书在技术上与商业证书(如 DigiCert, GeoTrust, Sectigo 等)提供的加密强度完全相同。它们都遵循相同的行业标准(X.509标准),提供相同的加密级别(例如 RSA 或 ECC 密钥)。

# 更新证书
~/.acme.sh/acme.sh –renew -d free-ai.top –force

# 申请证书(Linux acme.sh)
acme.sh –issue –dns dns_ali -d free-ai.top –server letsencrypt

acme.sh –install-cert -d free-ai.top \
–key-file /home/aliketen/docker-compose-app/nginx/certs/free-ai.top_ssl.key \
–fullchain-file //home/aliketen/docker-compose-app/nginx/certs/free-ai.top_ssl.crt \
–reloadcmd “docker restart nginx-ds”

# 切换到证书目录
cd ~/.acme.sh/free-ai.top

# 生成 Windows/IIS 兼容 PFX
openssl pkcs12 -export \
-out www.xxx.com_ssl_compat.pfx \
-inkey www.xxx.com.key \
-in www.xxx.com.cer \
-certfile ca.cer \
-passout pass:free-ai.top \
-keypbe PBE-SHA1-3DES \
-certpbe PBE-SHA1-3DES \
-macalg SHA1 \
-nomaciter

# 使用脚本生成
sudo mkdir -p ./scripts/
sudo vi gen_pfx.sh

#!/bin/bash

# PFX 密码
PASSWORD="free-ai.top"

# 如果没有传参数,则提示
if [ $# -lt 1 ]; then
    echo "用法: $0 域名1 [域名2 ...]"
    exit 1
fi

# 遍历所有域名
for DOMAIN in "$@"; do
    CERT_DIR="$HOME/.acme.sh/$DOMAIN"
    PFX_OUT="$CERT_DIR/${DOMAIN}_ssl_compat.pfx"

    # 检查证书和私钥是否存在
    if [ ! -f "$CERT_DIR/$DOMAIN.cer" ] || [ ! -f "$CERT_DIR/$DOMAIN.key" ] || [ ! -f "$CERT_DIR/ca.cer" ]; then
        echo "域名 $DOMAIN 的证书或私钥不存在,跳过"
        continue
    fi

    echo "正在生成 Windows IIS 兼容 PFX: $DOMAIN"
    openssl pkcs12 -export \
      -out "$PFX_OUT" \
      -inkey "$CERT_DIR/$DOMAIN.key" \
      -in "$CERT_DIR/$DOMAIN.cer" \
      -certfile "$CERT_DIR/ca.cer" \
      -passout pass:$PASSWORD \
      -keypbe PBE-SHA1-3DES \
      -certpbe PBE-SHA1-3DES \
      -macalg SHA1 \
      -nomaciter

    if [ $? -eq 0 ]; then
        echo "PFX 生成成功: $PFX_OUT"
    else
        echo "PFX 生成失败: $DOMAIN"
    fi

done

sudo chmod +x gen_pfx.sh

/home/aliketen/scripts/gen_pfx.sh free-ai.top