ssl - 嵌入式网络服务器和证书

标签 ssl certificate openssl ssl-certificate self-signed

我有一个带有嵌入式网络服务器的应用程序。这个网络服务器现在可以通过 OpenSSL 包做 SSL :)

现在是证书问题。这个应用程序已售出,我这么说是因为它不仅位于我拥有的服务器上——它还安装在数千台计算机上。我希望我的客户安全,所以我希望他们尽可能轻松地使用 SSL。现在我们创建自己的 CA,然后创建自签名证书。这意味着我们所有的客户(及其用户)都需要安装他们自定义的、特定于安装的 CA,或者忍受来自证书的不受信任的根警告,这两种方法都没有吸引力。

如何解决这个问题?

我们要么需要:

  1. 让安装我们的 CA 变得非常简单(浏览器故意让它变得非常困难——很多可怕的警告对话框)
  2. 以某种方式让所有这些客户证书由浏览器认可的 CA 合法签名。
  3. 强制客户去购买他们自己的证书并安装

我不知道我们将如何做#1,所以我们正在研究#2。 #3 几乎不可能。

我们突然想到,我们可以只购买一个 SSL 证书,然后将其与我们的产品一起发送——是的,每个人都在使用相同的证书,并且证书和私钥可能/将会泄露到公共(public)域中。 . 嗯……出于责任的考虑,可能不希望我们的名字出现在上面……

我想问题在于我们首先违背了 CA 的目的。关于如何使用户轻松安全地进行此操作有什么想法吗? (假设中间人攻击不是问题——有没有实际记录过这种攻击??)

最佳答案

对此没有简单易行的解决方案。如果这个问题很容易解决,SSL 证书系统的安全性就会很差。

正如您所说,关于如何避免浏览器警告,您的选择是有限的。每种方法都可能好用,具体取决于应用。

<强>1。在客户端浏览器上安装根 CA

如果应用程序是在内部使用,或者如果客户需要安装一些东西来使用该应用程序,这是一个合理的解决方案。这可能也是成本最低的解决方案,因为不需要额外费用。但是,如果该应用程序将被广大人群使用,那么这不是一个合理的解决方案。

<强>2。购买商业根 CA 签名证书

如果您的应用程序对互联网开放,这很可能是必需的。但是,如果您要销售应用程序而不是简单地提供其服务,那么出于您提到的责任原因,这可能并不好。

<强>3。让客户购买他们自己的商业根 CA 签名证书

如果您的应用程序被出售供客户使用,这可能是合理的。您可以使用自签名证书作为基本选项来提供应用程序,并向您的客户提供在他们愿意时使用他们的证书的机会。许多公司的网站已经拥有 SSL 证书。

关于ssl - 嵌入式网络服务器和证书,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/744613/

相关文章:

xcode - 未找到有效签名身份状态

curl - OS X 与 curl SSL 战斗 - 证书错误

php - PHP 5.6 中的 SoapClient 在使用 HTTPS 时发出带有 "key values mismatch"的警告

sockets - 如何在 D 中创建 SSL 套接字?

.net - 服务器修改了 SSL 证书 "Issued by"

ssl - Jmeter 关闭 SSL 证书

node.js - 使用 node-gyp 构建时,无法将 nodeJS native C++ 插件链接到与 Node (0.10.18) 静态绑定(bind)的 OpenSSL

python - 属性错误 : 'module' object has no attribute 'DTLSv1_METHOD'

security - 代码签名 : When & Why?

r - 安全 Elasticsearch R 连接错误 - 客户端请求的协议(protocol) TLSv1 未启用或不受支持