SSL错误:证书链中的自签名证书

编辑:作为以下文件描述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我希望有人可以帮助geo出一个线索:D

我刚刚通过后缀,通过TLS提供IMAP和SMTPconfiguration我们的mta。 在testing期间,我创build了一个自签名证书,但现在,为了避免恼人的不受信任的证书警告,我在Godaddy购买了一个便宜的证书; http://www.godaddy.com/compare/gdcompare3_ssl.aspx

这里的问题是我做错了什么,可能在安装Godaddy下载的证书时,所以我仍然在警告。

以下是我遇到的过程:

 openssl genrsa -des3 -out domain.key 1024
 openssl req -new -key domain.key -out domain.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 

但是当testing我得到以下问题:

     openssl s_client -connect imap.domain.ltd:465
连(00000003)
深度= 2 C = US,O =“Starfield Technologies,Inc.”,OU = Starfield Class 2authentication机构
validation错误:num = 19:证书链中的自签名证书
validation返回:0
 ---
证书链
  0 s:/ OU =域控制validation/ CN = webeloping.es
    i:/ C = US / ST = Arizona / L = Scottsdale / O = Starfield Technologies,Inc./OU=http://certificates.starfieldtech.com/repository/CN=Starfield安全authentication机构/ serialNumber = 10688435
  1 s:/ C = US / ST = Arizona / L = Scottsdale / O = Starfield Technologies,Inc./OU=http://certificates.starfieldtech.com/repository/CN=Starfield安全authentication机构/ serialNumber = 10688435
    i:/ C = US / O = Starfield Technologies,Inc./OU =星空2类证书颁发机构
  2 s:/ C = US / O = Starfield Technologies,Inc./OU = Starfield Class 2authentication机构
    i:/ C = US / O = Starfield Technologies,Inc./OU =星空2类证书颁发机构
 ---
服务器证书
 ----- BEGIN CERTIFICATE -----
 MIIFcjCCBFqgAwIBAgIHKx6Jb01O + jANBgkqhkiG9w0BAQUFADCB3DELMAkGA1UE
 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中的相关configuration如下所示:

     ## /etc/postfix/main.cf
    由Godaddy和sf_bundle.crt提供
     smtpd_tls_cert_file =的/ etc / SSL /证书/ domain.crt
     ##由我生成
     smtpd_tls_key_file =的/ etc / SSL /私人/ domain.key
     smtp_tls_CAfile =的/ etc / SSL /证书/ CA-certificates.crt

你不需要链中的根证书(虽然我不相信它会伤害任何东西)。

在这种情况下,我认为这个错误更多的是openssl的警告。 我相信这意味着openssl不知道它应该信任该链的根证书。 如果你从这个bundle中取出根证书,并用-CAfile参数指向它的openssl命令,我认为“错误”应该消失。

在sf_bundle.crt文件里面你应该看到两个

 -----BEGIN CERTIFICATE----- .... -----END CERTIFICATE----- 

块(可能在每个块上面显示纯文本,显示块包含哪个证书)。 如果你将每个块分成它自己的文件,所以你最终得到block1.crtblock2.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 ,应该,希望,连接,而不会给你的自签名证书错误。

如果你真的这样做

 domain.key domain.crt sf_bundle.crt >> domain.pem 

那么你把你的私钥包含在链中,你不应该这样做。

只需要你的服务器的证书加上中介证书链,这样客户端就可以把他们顶层的签发者与他拥有的可信根证书进行匹配