编辑:正如以下文档所述,http://www.novell.com/support/kb/doc.php?id=7002392
我已经像这样连接了这些文件domain.crt sf_bundle.crt >> domain.pem
,现在以下命令openssl s_client -connect domain:465
抱怨verify error:num=19:self signed certificate in certificate chain
我希望有人可以帮助找出线索:D
我刚刚通过 postfix 配置了我们的 mta,它通过 TLS 提供 IMAP 和 SMTP。在测试期间,我创建了一个自签名证书,但现在,为了避免烦人的不受信任证书警告,我在 GoDaddy 购买了一个便宜的证书;http://www.godaddy.com/compare/gdcompare3_ssl.aspx
这里的问题是我做错了什么,可能是在安装 GoDaddy 下载的证书时,所以我仍然看到警告。
以下是我遇到的过程:
openssl genrsa -des3 -out 域.key 1024 openssl req -new -key 域.key -out 域.csr
转到 GoDaddy,粘贴 csr 文件的内容(包括开始和结束标签)。此时,我可以下载生成的证书(一个 zip 文件),因此现在我有以下文件:
sf_bundle.crt ;链式文件,不知道该怎么用 domain.crt;由 Godaddy 与 sf_bundle 一起提供 domain.csr ;由我生成 domain.key ;由我生成
我不确定我应该怎么做,但我做了以下事情:
cat domain.crt sf_bundle.crt >> /etc/ssl/certs/domain.pem
ln -sf /path/to/domain.key /etc/ssl/private/domain.key
但在测试时我遇到以下问题:
openssl s_client -connect imap.domain.ltd:465 已连接(00000003) 深度 = 2 C = 美国,O = “Starfield Technologies, Inc.”,OU = Starfield 2 类认证机构 验证错误:num=19:证书链中的自签名证书 验证返回:0 --- 证书链 0 s:/OU=域控制已验证/CN=webeloping.es i:/C=US/ST=Arizona/L=Scottsdale/O=Starfield Technologies, Inc./OU=http://certificates.starfieldtech.com/repository/CN=Starfield Secure Certification Authority/serialNumber=10688435 1 s:/C=US/ST=Arizona/L=Scottsdale/O=Starfield Technologies, Inc./OU=http://certificates.starfieldtech.com/repository/CN=Starfield Secure Certification Authority/serialNumber=10688435 i:/C=US/O=Starfield Technologies, Inc./OU=Starfield 2 类认证机构 2 s:/C=US/O=Starfield Technologies, Inc./OU=Starfield 2 类认证机构 i:/C=US/O=Starfield Technologies, Inc./OU=Starfield 2 类认证机构 --- 服务器证书 -----开始证书----- MIIFcjCCBFqgAwIBAgIHKx6Jb01O+jANBgkqhkiG9w0BAQFADCB3DELMAkGA1UE BhMCVVMxEDAOBgNVBAgTB0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxJTAj BgNVBAoTHFN0YXJmaWVsZCBUZWNobm9sb2dpZXMsIEluYy4xOTA3BgNVBAsTMGh0 dHA6Ly9jZXJ0aWZpY2F0ZXMuc3RhcmZpZWxkdGVjaC5jb20vcmVwb3NpdG9yeTEx MC8GA1UEAxMoU3RhcmZpZWxkIFNlY3VyZSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0 eTERMA8GA1UEBRMIMTA2ODg0MzUwHhcNMTMwNzEyMDc1NTA0WhcNMTQwNzExMTcz MTAyWjA7MSEwHwYDVQQLExhEb21haW4gQ29udHJvbCBWYWxpZGF0ZWQxFjAUBgNV BAMTDXdlYmVsb3BpbmcuZXMwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIB AQDTAHQM3SanFxSZWnxls837ySCHB/CfBJXIBoKQdYOf/N3lGt69jnNHF8X2ZmSI TeW5Xk/wXnjruKD/EhBvAxiYZVWcp5zJGxd6VNqntiFCVTSesSnwM/X6A54vq/57 UnvrqK7ZozWnINiO/LIWxdVCUwcOmXH+fp6mVUsCbNd8Gp1HpMorhzpvBj1E/5I4 HbZjErGfrLlCYhs2cATtTcBtiUxne3CKOsT/sWd3Z2DAKsJQqd5u3Y59EEfiJmDq xtoCkfYAhZz5FkA9mr2PQD+UKGLOGjvRDI7P8p5RR9ZG7jixdok5qq0OikCPwex4 hatfWEokBjmWcmr8QcUk1cQjAgMBAAGjggHXMIIB0zAPBgNVHRMBAf8EBTADAQEA MB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjAOBgNVHQ8BAf8EBAMCBaAw OQYDVR0fBDIwMDAuoCygKoYoaHR0cDovL2NybC5zdGFyZmllbGR0ZWNoLmNvbS9z ZnMxLTI1LmNybDBZBgNVHSAEUjBQME4GC2CGSAGG/W4BBxcBMD8wPQYIKwYBBQUH AgEWMWh0dHA6Ly9jZXJ0aWZpY2F0ZXMuc3RhcmZpZWxkdGVjaC5jb20vcmVwb3Np dG9yeS8wgY0GCCsGAQUFBwEBBIGAMH4wKgYIKwYBBQUHMAGGHmh0dHA6Ly9vY3Nw LnN0YXJmaWVsZHRlY2guY29tLzBQBggrBgEFBQcwAoZEaHR0cDovL2NlcnRpZmlj YXRlcy5zdGFyZmllbGR0ZWNoLmNvbS9yZXBvc2l0b3J5L3NmX2ludGVybWVkaWF0 ZS5jcnQwHwYDVR0jBBgwFoAUSUtSJ9EbvPKhIWpie1FCeorX1VYwKwYDVR0RBCQw IoINd2ViZWxvcGluZy5lc4IRd3d3LndlYmVsb3BpbmcuZXMwHQYDVR0OBBYEFJp4 5TYP4T3BfuI67Ek2vxtUNiVCMA0GCSqGSIb3DQEBBQUAA4IBAQBjXFPi/3e3GJ+J Pj7Rafieee4Tqcc5QbwKvrFEdK3OW9/XjntchNOsKumKFJeiK8bsUbSTS+wlpyKG +qHwrf8d1TtZgKiyJTBHcKxItqSrGsULM5ntTFq/gchOkE0hwK4vfwHZD9bHyy20 CqexuaTT3zpAL3zZi5q2QaOpqQxhPmlkIZvmNotw+a/E+3hmOFKpQtVfT7XeAcQr bIUMZUEbs778VzjnKdg4grD7oZxwPczbaeJLhdvKs8OEJSbqX/820hLQfoX+wMCI PNI1jPU3th1cu9nPKU41BXIDY1L6w9zCl2DRvQvjFx9YnjQ/R6YiyaCCh39WS+xg +An9srwv -----证书结束-----
Postfix 中的相关配置如下:
/etc/postfix/main.cf /etc/postfix/main.cf 复制代码 ##由 Godaddy 与 sf_bundle.crt 一起提供 smtpd_tls_cert_file=/etc/ssl/certs/domain.crt ##由我生成 smtpd_tls_key_file=/etc/ssl/private/domain.key smtp_tls_CAfile=/etc/ssl/certs/ca-certificates.crt
答案1
您不需要链中的根证书(尽管我认为拥有它不会带来任何损害)。
我认为,在这种情况下,该错误更像是 openssl 发出的警告。我相信这意味着 openssl 不知道它应该信任该链的根证书。如果您从该包中取出根证书,并使用参数将 openssl 命令指向它,-CAfile
我预计“错误”应该会消失。
在 sf_bundle.crt 文件中,你应该看到两个
-----BEGIN CERTIFICATE-----
....
-----END CERTIFICATE-----
块(可能每个块上方都有纯文本,显示该块包含哪些证书)。如果您将每个块拆分为自己的文件夹,那么您最终将获得,block1.crt
并且block2.crt
您应该能够openssl x509 -noout -subject -in <file.crt>
在每个块上运行以获取其各自的证书主题行。
假设block2.crt
主题行是,/C=US/O=Starfield Technologies, Inc./OU=Starfield Class 2 Certification Authority
那么您应该能够运行openssl s_client -CAfile block2.crt -connect imap.domain.ltd:465
,并且希望能够连接而不会给您自签名证书错误。
答案2
如果你真的这么做了
domain.key domain.crt sf_bundle.crt >> domain.pem
那么你就将你的私钥包含在链中,而你不应该这样做。
只需要你的服务器证书加上中间证书链,这样客户端就可以将它们顶部的颁发者与他拥有的受信任的根证书进行匹配