意外“根据验证过程,远程证书无效。”
问题描述:
我试图通过Mailkit从.NetCore/Ubuntu机器连接到SMTP服务器。意外“根据验证过程,远程证书无效。”
我试图连接到SSL关闭的服务器上的端口25。
邮件服务器是本地局域网上的一台Windows服务器,并且可以在其他机器上正常工作,其设置与Ubuntu机器上使用的相同。
用来连接的代码如下:
using (var client = new SmtpClient())
{
client.Connect("smtp.mydomain.com", 25,false);
client.Authenticate(username, password);
client.Send(emailMessage);
client.Disconnect(true);
}
然而,这与错误消息 的.Connect线之后立即抛出异常“的远程证书根据验证过程是无效的。 “
我很惊讶,证书在所有涉及香草端口25
有没有人有任何想法是怎么回事?
答
服务器可能启用TLS作为SMTP的一部分。这很常见,它是STARTTLS动词。
如果这适用于其他Windows盒子,您是否在AD?如果是这样的话,AD上可能有一个CA颁发证书,通过组策略自动信任证书。所以你也需要configure OpenSSL on your Ubuntu machine to trust that CA。
或者你可以说他妈的它,并告诉StmpClient忽略安全与
client.EnableSsl = true;
答
为什么你看到端口25上的SSL证书的原因是由于原因,在服务器上,提供一个STARTTLS港口。要找出哪个SSL证书使用您可以直接使用OpenSSL的通过提到here方式如下:
的OpenSSL的s_client.First -connect exchange01.int.contoso.com:25 -starttls SMTP
它可能因为这里使用的这个SSL证书是自签名的,那么你可以用可信任的证书代替(如果可以的话),或者你可以信任自签名证书。
感谢您的回复。我可以通过传递SecureSocketOptions.None来解决这个问题。作为Connect()方法的第三个参数。 – Hughgo