You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET Web API通过SSL证书连接PostgreSQL遇密钥相关错误求助

解决.NET Web API连接PostgreSQL SSL时的密钥/证书错误

针对你遇到的The key contents do not contain a PEM, the content is malformed, or the key does not match the certificate错误,按以下步骤排查修复:

  • 检查客户端密钥的PEM格式
    确保你的clientpostgresKey.key是标准PEM格式,文件开头必须包含-----BEGIN PRIVATE KEY-----或-----BEGIN RSA PRIVATE KEY-----,结尾对应有-----END PRIVATE KEY-----或-----END RSA PRIVATE KEY-----。如果是DER等其他格式,用OpenSSL转成PEM:

    # 若为RSA密钥
    openssl rsa -in clientpostgresKey.key -out clientpostgresKey_pem.key
    # 若为PKCS#8格式密钥
    openssl pkcs8 -topk8 -inform PEM -in clientpostgresKey.key -out clientpostgresKey_pem.key
    

    替换连接字符串中的密钥路径为转换后的文件。

  • 验证密钥与证书的匹配性
    用OpenSSL命令对比证书和密钥的模数哈希,确认两者配对:

    # 获取证书模数哈希
    openssl x509 -noout -modulus -in clientpostgres.crt | openssl md5
    # 获取密钥模数哈希
    openssl rsa -noout -modulus -in clientpostgresKey.key | openssl md5
    

    两个命令输出的哈希值必须完全一致,否则说明密钥和证书不对应,需要重新生成配对的客户端证书和密钥。

  • 移除密钥的密码保护
    如果你的密钥设置了密码,Npgsql驱动默认不支持带密码的私钥。可以用以下命令移除密码:

    openssl rsa -in clientpostgresKey.key -out clientpostgresKey_nopass.key
    

    或者在连接字符串中添加SSL Password=你的密钥密码参数。

  • 检查文件权限与路径
    确保.NET Web API的运行进程(比如IIS应用池身份用户)拥有C:\SSL文件夹及其中证书、密钥文件的读取权限。路径中的双反斜杠格式是正确的,但要确认文件实际存在且路径无误。

  • 验证根证书有效性
    确认rootCA.crt是签发客户端证书的CA根证书,且为PEM格式,文件内容没有多余的空格、换行或其他无效字符。

内容的提问来源于stack exchange,提问作者nnchvxx

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 02:05:20