提前抱歉,这最终可能是一个冗长而混乱的帖子;因为这就是我所在的地方:我已经尝试这样做两天了,我很困惑:P
上下文:我有一个网站(我们将其称为 www.mysite.com),并且我从主要 CA 获得了有效证书。HTTPS 工作正常,证书是各种有效的。
目标:我现在想向我授权使用我的网站的人颁发证书,以便我可以为其添加额外的安全层,并让 Apache 在他们看到 PHP 网站的结果之前拒绝未经授权的用户或使用这些凭据登录。
我所做的:我至少遵循了三个不同的教程,并阅读了六篇关于如何颁发这些证书的教程,但简而言之,它们无法验证。大多数教程都谈到了建立我自己的自签名 CA 证书,然后使用该证书的密钥来签署用户请求的其他证书。我已经尝试过了,Firefox(版本 19.02)和 IE(版本 8 :( )都无法连接,我不明白为什么了。
所以具体的问题:
1. Apache的命令有错吗? 当我包括:
SSLEngine on
SSLCertificateFile /etc/path/to/www.mysite.com.crt
SSLCertificateKeyFile /etc/path/to/www.mysite.com.key
SSLCACertificateFile /etc/path/to/www.mysite.com.cabundle
SSLVerifyClient require
SSLVerifyDepth 10
在我的 httpd.conf 文件中,服务器适当地拒绝没有证书的访问。但是,我已经为最终用户生成了我认为是有效的证书,但它仍然被拒绝。如果上面显示的文件是主要 CA (VeriSign) 给我的文件,那么我只是创建了一个错误的用户证书吗?那些 apache 命令实际检查的是什么?
2. openssl 的标志是如何工作的? 我正在创建用户的证书:
openssl ca -in ./path/to/usersrequest.csr -cert ./etc/path/to/www.mysite.com.crt -keyfile ./etc/path/to/www.mysite.com.key -out ./path/to/userscert.crt
也许我使用了错误的密钥或什么?我应该使用从 VeriSign 证书中获得的公钥还是私钥?如果我理解正确阅读的内容,我应该能够简单地向我的最终用户颁发一个新证书,用我的“官方”证书中的相同密钥签名,它应该可以工作......但它不是:(
我也试过:
openssl x509 -req -CA /etc/path/to/cert.pem -CAkey /etc/path/to/cert.pem -CAcreateserial -in usersrequest.csr -out user.crt
我得到一个错误,上面写着unable to load CA private key
......我什至不知道那是什么意思。
最后,我知道这些可能是 n00b 问题,答案正盯着我的脸,但我一直在努力学习这个主题并编写代码两天了,我的大脑只是被炒了......我会继续努力,但如果有人能指出我正确的方向,我会非常感激。
TIA,科沃夏克