Let's Encrypt acme.sh生成证书报string too long错误的原因与解决
解决acme.sh申请Let's Encrypt证书时的"string too long"错误
错误含义
这个错误是因为你的域名长度超过了X.509证书标准中CN(通用名称)字段的ASN.1编码限制——最大允许64个字符。你使用的域名update.gerqwertyuiopasdfghjklzxcvbnmgerqwertyuiopasdfghjklzxcvbnm.site长度远超该限制,导致openssl生成CSR(证书签名请求)时失败。
解决方法
- 更换短域名:直接使用长度≤64字符的域名申请证书,这是最直接有效的方案。
- 利用SAN字段绕过CN限制:若必须保留长域名,可通过指定密钥类型让acme.sh自动使用SAN(主题备用名称)字段承载域名,避免触发CN字段的长度限制。执行以下命令:
~/.acme.sh/acme.sh --issue -d update.gerqwertyuiopasdfghjklzxcvbnmgerqwertyuiopasdfghjklzxcvbnm.site --standalone --keylength ec-256 --force
其中--force用于强制重新生成CSR,清除旧的缓存配置;--keylength ec-256指定使用ECC密钥,新版本acme.sh会自动为这类密钥的CSR使用SAN字段。
- 更新acme.sh到最新版本:如果上述方法无效,先升级acme.sh,确保其支持长域名的SAN字段处理:
~/.acme.sh/acme.sh --upgrade
内容的提问来源于stack exchange,提问作者SMQS 4000
相关产品推荐
相关产品推荐

