Answers:
浏览器具有受信任的“证书颁发机构”(CA)证书的列表。如果服务器的证书由这些CA证书之一签名并且格式正确,则不会收到SSL警告。
许多浏览器附带许多常见的CA证书,例如Verisign,Thawte等。大多数浏览器允许您将新的CA导入此受信任的CA列表。
就像创建自己的自签名服务器证书一样,您可以创建自己的自签名CA证书。然后,您可以使用它来签署服务器证书。如果您的CA不是由知名公司提供的(如果是您自己制作的,则不是),则必须在服务器端显式导入它。
我以前曾经xca
做过。它具有用于CA和HTTP服务器的模板。程序是这样的:
然后,您需要导出(如果使用,则作为文件xca
)CA证书(但当然不包括私钥)。.pem
将生成A,但您可以将扩展名更改为.crt
。当用户单击它时,将提供将其安装在Firefox和Internet Explorer以及可能的其他主要浏览器上。至于此.crt的自动安装,您可以:
然后,您可以使用HTTP服务器证书上的导出功能(将私钥和证书同时导出到服务器端)放到代理服务器上。
将证书复制到/etc/ssl/certs
目标系统上。然后,使用命令生成的哈希值openssl x509 -noout -hash -in ca-certificate-file
替换ca-certificate-file
证书名称来创建符号链接。然后,没有自己的证书存储的所有程序都应接受您的证书。
对于具有自己的证书库(浏览器,Java等)的程序,您将需要导入证书。
最好生成自己的自签名或已签名证书。
您可能需要安装tinyca2
并生成自己的证书颁发机构。您可以按照上述步骤中的详细说明导入证书颁发机构证书。为您的应用程序生成并部署签名证书。
将您的CA证书分发给那些需要信任您的证书的用户。您可能需要提供有关如何将证书导入到他们的信息。警告:如果他们这样做,您将成为他们的另一个受信任的CA,因此请相应地保护您的CA。
还可以将许多工具配置为信任自签名证书或具有不受信任的CA的证书。这通常是一次性动作。如果从不安全的机构接受CA证书(只有接受的证书是受信任的),这样做可以更加安全。
/etc/ssl/certs/ssl-cert-snakeoil.pem
这是Debian软件包ssl-cert
为您创建的)。我们将其复制到主机A并调用它/etc/ssl/certs/host-B.pem
(因为该主机可能已经有一个ssl-cert-snakeoil.pem
)。然后我们跑ln -s /etc/ssl/certs/host-B.pem $(openssl x509 -noout -hash -in /etc/ssl/certs/host-B.pem)
。