我正在编写一个通过HTTPS实现REST API的程序。到目前为止,我已经在Windows下测试了它,通过向受信任的商店添加自签名证书,它工作正常。现在,我试图让它在Mono下的Linux服务器上工作,使用来自加密的真实证书,到目前为止我的尝试都没有成功。
我的第一次尝试是使用HttpListener
,并使用Mono的httpcfg
工具在服务器上安装证书。经过大量的反复试验,我设法将PEM证书转换为httpcfg
可接受的PVK文件。但是,当我启动服务器并尝试通过HTTPS从浏览器连接到服务器时,服务器崩溃时出现System.IO.IOException: Remote prematurely closed connection
错误,来自Mono。
无法找到原因的答案,并且希望我没有必要在机器上安装证书才能让它工作,我从HttpListener
切换到SslStream
,一直试图让测试程序与之合作。但是我再一次试图让它以某种形式接受Let的加密证书。我使用证书文件调用X509Certificate.CreateFromCertFile()
的每次尝试都会导致System.NotSupportedException: The server mode SSL must use a certificate with the associated private key
错误。
我需要做些什么才能让Let's加密证书在这里工作?似乎没有任何相关的文档。在这一点上,我希望SslStream
能够正常工作,这样我就不必安装证书,但如果有HttpListener
,我会再次安排CAN | Contact | Email | Order Ref
22 | C1 |blah@b | 23334
22 | C2 |blah@b | 23334
22 | C3 |blah@b | 23334
。让Mono接受它的方法。