正确的方法来生成一个安全的自签名证书

我有几个我想要安装一个自签名的SSL证书的网站。 我尝试了下面的各种指南,比如这个指南(都提供了或多或less的完全相同的说明)。 但是,给出的说明似乎是安全过时的。 我将是唯一一个在网站上使用SSL的人; 人们不会知道HTTPS是否启用,除非他们挖掘它。

例如,Chrome会为我的网站显示此信息 ,而针对ServerFault显示此信息 。 如何使用当前的encryption标准生成正确,安全的SSL / TLS证书? 万一重要,服务器运行Ubuntu 14.10服务器和Apache 2.4。

我看到两件事立刻就错了。

  1. 您拥有* .example.com的证书,但是您以https://example.com的身份访问该网站。 父域不会接受通配符证书。 通过https://www.example.com访问它,或者创build一个新的证书。
  2. 您正在使用SHA1散列作为证书。 这被认为是不好的。 openssl中的-sha256开关应该解决这个问题。 下面是一组开关示例: openssl req -new -newkey -sha256 rsa:2048

您可能还想在Apache中检查您的SSL设置,特别是允许哪些algorithm。 至lessclosuresSSLv2 / SSLv3。 如果只是你,我会closures所有小于TLSv1.2的,只select高级密码。

下面是一个经常被引用的页面( \打破连续string)的例子:

 SSLProtocol ALL -SSLv2 -SSLv3 SSLHonorCipherOrder On SSLCipherSuite ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128: \ DH+AES:ECDH+3DES:DH+3DES:RSA+AESGCM:RSA+AES:RSA+3DES:!aNULL:!MD5:!DSS 

编辑:无论哪种方式,Chrome和Firefox都不会很好地对自签名证书做出反应,除非您将它们(和/或您的操作系统)configuration为特别信任签名它们的根CA.