我有一个 REST 后端,可以使用客户端证书基于 X509 身份验证。
现在我有一个用 Angular 2 编写的前端,它也应该使用 X509 身份验证并将其进一步提供给 REST 后端。
我不明白的是如何将客户端证书从 Angular 2 前端转发到 REST 后端以进行身份验证。是否有可能或者我应该使用一个安全域作为前端和客户端之间的 X509 身份验证,以及第二个安全域作为前端和后端之间的 X509 身份验证?
最佳答案
如果您使用 Apache2 httpd 服务器来托管您的 Angular2 应用程序,您可以在您的系统上安装 mod_ssl,具体取决于操作系统。
安装 mod_ssl 后,会创建一个新的配置文件。在我的例子中,它位于:/etc/httpd/conf.d/ssl.conf
。放置以下配置,当然可以针对您的用例进行调整。
您需要拥有 CA 证书、由该 CA 签名的服务器证书以及服务器私钥。
<VirtualHost *:443>
SSLEngine On
SSLCertificateFile /var/www/html/certs/localhost.crt
SSLCertificateKeyFile /var/www/html/certs/key.pem
SSLCACertificateFile /var/www/html/certs/ca.crt
SSLVerifyClient require
SSLVerifyDepth 2
SSLOptions +ExportCertData
ServerAdmin info@example.com
ServerName localhost
DocumentRoot /var/www/html
ErrorLog /var/www/logs/error.log
CustomLog /var/www/logs/access.log combined
ProxyPass /services ajp://localhost:8009/services
ProxyPassReverse /services ajp://localhost:8009/services
SSLOptions +ExportCertData
DocumentRoot /var/www/html
<Directory /var/www>
Options -Indexes
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
重新启动 apache2 后,它现在会提示用户输入证书,并通过 SSLOptions +ExportCertData 将该证书转发到后端
关于rest - 从客户端到 REST 后端的 Angular 2 X509 身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41683448/