![是否可以使用 SSH 密钥/PEM 进行网络身份验证来代替密码保护?](https://linux22.com/image/640962/%E6%98%AF%E5%90%A6%E5%8F%AF%E4%BB%A5%E4%BD%BF%E7%94%A8%20SSH%20%E5%AF%86%E9%92%A5%2FPEM%20%E8%BF%9B%E8%A1%8C%E7%BD%91%E7%BB%9C%E8%BA%AB%E4%BB%BD%E9%AA%8C%E8%AF%81%E6%9D%A5%E4%BB%A3%E6%9B%BF%E5%AF%86%E7%A0%81%E4%BF%9D%E6%8A%A4%EF%BC%9F.png)
我一直在想办法进一步锁定我们的开发站点,然后想到了一个主意,那就是不要使用 IP 中心 + 密码保护,而是使用更类似于 PEM 密钥的东西,就像我用于 ssh 进入服务器一样。我很好奇这是否可行,以及如何设置它。我查看了 Apache AuthType 文档,发现它除了支持 Basic 之外还支持多种功能,例如 Digest 和 Form,我很好奇我是否可以利用其中任何一个,或者可能还有其他东西,以便我们的服务器端口 80 和 443 仅在出示证书时可见?
答案1
你要的是可能的。但是,由于中缺少starttls
/命令,因此它仅适用于。非证书 ssh-keys 不适用于此目的。stls
http
https
客户端需要将证书(和私钥)安装在浏览器中。
除了 https 侦听器的其他标准指令外,服务器还需要包含以下指令。
SSLVerifyClient require
SSLVerifyDepth 1
SSLCACertificateFile path/to/a/trusted/CA.crt
答案2
如果您的网站使用 SSL,则可以选择使用客户端证书来授权用户。
该方法的工作方式如下:
您将 Apache 配置为使用客户端证书身份验证
创建 CA 来生成并签署证书
为所有用户生成并签署认证
配置目录以使用 SSLVerifyClient 指令
有一份非常好的详细指南这里。