我做了一个应用程序,它通过. net SSLStream
,为了开发,我曾经makecert.exe
创建一个自签名的 ssl 证书。现在我读过一些微软文章,makecert 应该只用于测试。
现在我的问题是:使用此证书的应用程序是否安全,或者我可以使用哪个程序制作安全且可比较的证书?
非常感谢任何
帮助
4 回答
我建议使用OpenSSL创建用于生产环境的自签名证书。我从来没有想过makecert.exe。老实说:您希望在应用程序和服务器之间使用 SSL 实现数据的加密传输。
漏洞证书不会显示给“用户/客户”。现在唯一的原因是将带有“这是一个安全页面”的标记嵌入到启用 SSL 的页面中。
如果您正在寻找这个,您肯定需要来自 CA 的签名证书。如果您正在考虑这一点,我推荐StartSSL,因为它是最便宜的,并且为您提供一次性验证几乎无限的通配符证书。它受微软信任,您可以免费创建代码签名证书。(仅用于验证的一次性费用)。
关于证书的随机性和安全性:
如果您正在验证要连接的证书的指纹,则安全问题应该会减少。(即 Fiddler 不会以这种方式工作)。
SSL 基于RSA算法,因此在生成密钥大小为 2048 甚至 4096(在 StartSSL 上最大)的私钥/公钥对时,不应该有任何安全问题。如何创建您将在此处找到的证书 如果您不信任 RSA,则不应该信任任何人;)
请记住,大多数大学使用使用 OpenSSL 创建的自签名证书。它现在已通过FIPS 认证,并允许您进行大量设置以适应您的系统。
如果您找到某种安全的方式将证书提供给使用您的应用程序的每个人,那么它是安全的。否则,他们将无法知道他们真的在与您的应用程序交谈。其他任何人都可以makecert
像你一样奔跑,没有人有办法知道他们是否真的在和你说话。CA 颁发的证书将您的身份绑定到证书,让客户知道他们确实在与正确的服务通信。
当您打开https://www.amazon.com
浏览器时,您怎么知道您将信用卡信息发送到亚马逊而不是冒名顶替者?好吧,亚马逊有一个www.amazon.com
由证书颁发机构颁发的证书。冒名顶替者无法获得这样的证书——当局不会颁发它。
但如果亚马逊使用自签名证书……好吧,任何人都可以这样做。那么我怎么知道我实际上是在和亚马逊说话呢?我必须提前知道哪个自签名证书声称www.amazon.com
是正确的。我不会有 CA 的批准印章告诉我。
您将密码(作为长证书)硬编码到您的应用程序中,并且您在询问它是否安全?
我只需要一份您的代码副本或您存储它的任何地方,我就可以破解您编写的所有应用程序。另外,您无法更新或更改它。
自签名证书本质上说“我证明我是我。签名:我”。查看如何设置您自己的证书颁发机构(这取决于您选择的环境,并且有几个选项)。使用该权限颁发证书,并将服务器和客户端设置为信任您的 CA。无需为他们支付 $$$$,而且您确切知道在什么条件下分发证书。