我正在开发Angular2应用程序,并有一个要求它应使用双向SSL身份验证的请求,即浏览器在访问该应用程序时必须出示有效(PFX)证书。我正在使用lite-server(使用BrowserSync)进行部署。我研究了BrowserSync API和源代码,但是找不到如何指定它的任何选项。
我找到了一个示例here,该示例创建了一个纯node.js服务器,并提供了requestCert
和rejectUnauthorized
选项,但是我无法在BrowserSync中找到如何使用它们的方法。也许我应该将这些添加到BrowserSync源代码中?
最佳答案
如果有人感兴趣,这就是我使用小型bash脚本进行的操作。在撰写本文时,没有正确的方法配置Browsersync。通过运行此脚本,这将通过设置一些支持客户端身份验证的选项来修改Browsersync中的utils.js代码。
可以使用指定了true|false
选项的脚本运行脚本,该选项指定是否请求客户端身份验证。
#!/bin/bash
CLIENT_AUTH=true
if [ "$#" -ne 0 ]; then
CLIENT_AUTH=$1
fi
if [ $CLIENT_AUTH = true ] ; then
OLD_CLIENT_AUTH=false
else.
OLD_CLIENT_AUTH=true
fi
FILE=./node_modules/browser-sync/lib/server/utils.js
REPLACE="requestCert:$CLIENT_AUTH,rejectUnauthorized:$CLIENT_AUTH,"
FROM="requestCert:$OLD_CLIENT_AUTH,rejectUnauthorized:$OLD_CLIENT_AUTH,"
grep requestCert $FILE >/dev/null
if [ $? -ne 0 ] ; then
sed -i "s/ca: getCa(options),/ca: getCa(options),$REPLACE/g" $FILE
else
sed -i "s/$FROM/$REPLACE/g" $FILE
fi