如何使用我自己的CA创build每个用户的SSL证书?

这是情况:我有一个安全的服务器,但我只想提供访问那些具有某些证书文件。 我已经安装了apache(请参阅如何提供对不支持SSL的Web服务器的HTTPS访问? )。 我想知道如何创build不同的证书来validation我自己的CA.

此外,我可以在Firefox / Chromium等浏览器中导入这些证书文件吗?

(我当然希望所有这些使用openssl

编辑:httpd.conf的一部分

httpd.conf # require a client certificate which has to be directly # signed by our CA certificate in ca.crt SSLVerifyClient require SSLVerifyDepth 1 SSLCACertificateFile conf/ssl.crt/ca.crt 

如果我正确地理解了这个问题,那么你需要包含在大多数openssl发行版中的easy-rsa的东西。 您基本上需要构buildCA部分(看起来像您已经这样做了,但您可能需要根据这些文档重做),然后创build客户端证书并使用CA证书(包含的脚本负责处理所有这些内容)签名。 你可以在这里获得更多的信息:

http://openvpn.net/index.php/open-source/documentation/miscellaneous/77-rsa-key-management.html

或者findopenssl安装的easy-rsa目录,它应该是这样的:

 # cd /usr/share/doc/openvpn-2.0.9/easy-rsa/;ls 2.0 build-dh build-key build-key-pkcs12 build-req clean-all make-crl README revoke-full vars build-ca build-inter build-key-pass build-key-server build-req-pass list-crl openssl.cnf revoke-crt sign-req Windows 

运行自述文件中的说明,然后使用./build-key创build您的客户端证书。 正如你所提到的,你将需要在你的客户端上安装ca.crt。 我相信如果你愿意,Chrome会使用openssl系统,我认为firefox必须把证书安装到自己的key-store(以我的经验)。

我现在使用这个别名构build客户端密钥,以便在将证书发送给用户之前,由CA签名。

 build_key is a function build_key () { cd /usr/share/doc/openvpn-2.0.9/easy-rsa/; echo "key name?"; read answer; ./build-key $answer }