【问题标题】:Custom web server & self-signed certificate自定义 Web 服务器和自签名证书
【发布时间】:2017-07-14 17:54:06
【问题描述】:

首先让我说我对 ssl 和密码协议的了解非常有限。如果我说了什么明显错误的话,请耐心等待:-)。欢迎指正!

我正在构建一个自定义 Web 服务器以部署在隔离的本地网络中;这就是我运行服务的方式(Python 代码):

ssl_context = ssl.create_default_context(ssl.Purpose.CLIENT_AUTH)
ssl_context.load_cert_chain(certfile='mykey.crt', keyfile='mykey.key')
... client connects to https port 443 ...
ssl_sock = ssl_context.wrap_socket(sock, server_side=True)

这就是我生成 mykey.crt 和 mykey.key 文件的方式:

$ openssl genrsa -des3 -out mykey.orig.key 2048
$ openssl rsa -in mykey.orig.key -out mykey.key
$ openssl req -new -key mykey.key -out mykey.csr
$ openssl x509 -req -days 3650 -in mykey.csr -signkey mykey.key -out mykey.crt

到目前为止一切顺利,我的网络服务器运行良好。但我已经摆脱了 Firefox 理所当然地推到我脸上的“不安全”警告。

我想在访问我的网络服务器的少数客户端中安装我的自签名证书,以永久避免警告。

我遵循了我能找到的每一个证书安装指南,但我绝对无法让 Firefox(和 Chrome)接受我的证书。而且我没有从浏览器收到任何错误消息。 我想我在证书生成命令中遗漏了一些东西。

有人可以帮助我吗? 非常感谢!

【问题讨论】:

  • 检查浏览器中警告的实际内容(也许看看高级信息)。我的猜测是证书的内容与您用于访问服务器的 URL 不匹配。
  • 我真的找不到任何地方 Firefox 或 Chrome 显示拒绝我的证书的原因。此外,我在其他已经存在的证书中找不到我的证书,所以我认为这是一个证书问题,即使在我的客户尝试连接到我的 Web 服务器之前。无论如何,我会检查网址。谢谢。

标签: python ssl https self-signed


【解决方案1】:

自签名证书只能用于测试。您必须从“认可的证书颁发机构”获得证书

2)请检查:自签名证书需要有下一个数据: 网址、地址、 姓名, 电子邮件

3) 您应该使用由 CA 签署的证书

【讨论】:

  • 感谢您的建议,但不能使用由 CA 签名的证书,因为将访问此网站的设备未连接到 Internet,因此它们将无法验证证书.此外,我不能要求我的客户购买证书并跟踪续订。
猜你喜欢
  • 2010-12-11
  • 1970-01-01
  • 2012-06-20
  • 2011-08-15
  • 2011-08-12
  • 2011-06-11
  • 1970-01-01
  • 2015-10-21
  • 2013-07-18
相关资源
最近更新 更多