一款免费的SSL申请证书依赖包,可以申请品牌:
zerossl 记录方式:cname
letsencrypt 记录方式:TXT(验证较慢)
google 记录方式:TXT(验证耗时较长)
支持申请通配符和单域名,最长申请期限为90天
用法也特别简单,直接输入要申请的域名就行了,比如*.aa1.cn,这种就自动申请通配符
申请需要密钥,登录:ssl.aa1.cn/user/ 注册账号获取API密钥即可

安装方法
pip install fastssl
demo申请演示
"""
FastSSL SDK 使用示例 - 申请和验证SSL证书
安装依赖:pip install fastssl
开发者:明心科技
官方网站:ssl.aa1.cn
密钥获取:ssl.aa1.cn/user/ - API渠道
ZeroSSL 亚太合作开发者
官方网站:zerossl.com.cn
"""
from fastssl import FastSSLClient
# 初始化客户端(请替换为您的API密钥)
client = FastSSLClient(api_key="sk_2f2281d4199e461785c5d982c897c8c9")
# 要申请的域名
domain = "example.com"
print("=" * 60)
print("FastSSL SDK - 申请和验证SSL证书")
print("=" * 60)
# ============================================
# 步骤1: 申请SSL证书
# ============================================
print(f"\n[步骤1] 正在申请SSL证书: {domain}")
print("-" * 60)
create_result = client.create_certificate(
certificate_domain=domain,
channel_type="zerossl", # 可选: zerossl, letsencrypt, google
validation_method="DNS"
)
if create_result.get("success"):
print("证书申请成功!")
data = create_result.get("data", {})
print(f" 域名: {data.get('domain')}")
print(f" 证书品牌: {data.get('channel_type')}")
print(f" 验证方式: {data.get('validation_method')}")
print(f" 有效期: {data.get('validity_days')} 天")
print(f" 到期时间: {data.get('expiration_date')}")
# 显示DNS验证信息
verify_info = data.get("verify_info", [])
if verify_info:
print("\n DNS验证信息(请添加到您的DNS记录):")
for i, info in enumerate(verify_info, 1):
print(f"\n 记录 {i}:")
print(f" 域名: {info.get('domain')}")
print(f" 记录类型: TXT")
print(f" 记录名: {info.get('authKey')}")
print(f" 记录值: {info.get('authValue')}")
print(f" 已验证: {'是' if info.get('validated') == 1 else '否'}")
print("\n 请将上述DNS记录添加到您的域名DNS配置中,然后继续验证步骤。")
else:
print(" 未获取到DNS验证信息")
else:
print(" 证书申请失败")
print(f" 错误信息: {create_result.get('message')}")
print(f" 错误代码: {create_result.get('code', 'N/A')}")
exit(1)
# ============================================
# 步骤2: 验证域名(等待DNS验证生效)
# ============================================
print(f"\n[步骤2] 正在验证域名: {domain}")
print("-" * 60)
print(" 等待DNS验证生效,这可能需要几分钟...")
print(" 正在重试验证(最多10次,每次间隔5秒)...\n")
verify_result = client.verify_domain(
domain=domain,
max_retries=10, # 最多重试10次
retry_interval=5 # 每次间隔5秒
)
if verify_result.get("success"):
print(" 证书验证成功!")
data = verify_result.get("data", {})
print(f" 域名: {data.get('domain')}")
print(f" 证书编号: {data.get('certificate_no')}")
print(f" 验证状态: {data.get('verification_status')} (1=已验证)")
print(f" 证书到期时间: {data.get('certificate_expires')}")
print(f" 最后验证时间: {data.get('last_verified_at')}")
print(f" 验证次数: {data.get('verification_count', 0)}")
download_url = data.get("download_url")
if download_url:
print(f"\n 下载地址: {download_url}")
else:
print("\n 下载地址为空,证书可能还在处理中")
# 显示API结果摘要
api_summary = data.get("api_results_summary", {})
if api_summary:
print("\n API结果摘要:")
print(f" 验证成功: {api_summary.get('verify_success', False)}")
print(f" 打包成功: {api_summary.get('zip_success', False)}")
print(f" 获取证书成功: {api_summary.get('getcert_success', False)}")
else:
print("✗ 证书验证失败")
print(f" 错误信息: {verify_result.get('message')}")
# 显示失败详情
data = verify_result.get("data", {})
if data:
print(f" 域名: {data.get('domain')}")
print(f" 验证状态: {data.get('verification_status')}")
api_summary = data.get("api_results_summary", {})
if api_summary:
print("\n 失败详情:")
print(f" 验证成功: {api_summary.get('verify_success', False)}")
if not api_summary.get('verify_success'):
print(f" 验证消息: {api_summary.get('verify_message', 'N/A')}")
print(f" 打包成功: {api_summary.get('zip_success', False)}")
if not api_summary.get('zip_success'):
print(f" 打包消息: {api_summary.get('zip_message', 'N/A')}")
print(f" 获取证书成功: {api_summary.get('getcert_success', False)}")
if not api_summary.get('getcert_success'):
print(f" 获取证书消息: {api_summary.get('getcert_message', 'N/A')}")
# ============================================
# 步骤3: 获取证书信息(可选)
# ============================================
if verify_result.get("success"):
print(f"\n[步骤3] 获取证书详细信息: {domain}")
print("-" * 60)
cert_info = client.get_certificate_info(domain=domain)
if cert_info.get("success"):
print(" 获取证书信息成功!")
data = cert_info.get("data", {})
print(f" 域名: {data.get('domain')}")
print(f" 证书编号: {data.get('certificate_no')}")
print(f" 下载地址: {data.get('download_url')}")
# 证书内容(已自动删除\n)
crt_pem = data.get("crt_pem", "")
crt_key = data.get("crt_key", "")
crt_bundle = data.get("crt_bundle", "")
print(f"\n 证书内容长度: {len(crt_pem)} 字符")
print(f" 私钥长度: {len(crt_key)} 字符")
print(f" 证书链长度: {len(crt_bundle)} 字符")
if crt_pem:
print("\n 证书内容预览(前100字符):")
print(f" {crt_pem[:100]}...")
# 显示元数据
meta = cert_info.get("meta", {})
if meta:
print(f"\n 元数据:")
print(f" 尝试次数: {meta.get('attempts', 0)}")
print(f" 自动验证: {meta.get('auto_verified', False)}")
else:
print("✗ 获取证书信息失败")
print(f" 错误信息: {cert_info.get('message')}")
print("\n" + "=" * 60)
print("执行完成!")
print("=" * 60)
————————————————
版权声明:本文为优快云博主「骚老板」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.youkuaiyun.com/qq_49115569/article/details/157728789
530



被折叠的 条评论
为什么被折叠?



