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