我正在配置一个 Apache SSL 反向代理,用于从中间件调用后端服务器,我有客户端证书和密钥。不久:
http https
middleware -----------> proxy -------------> backend
中间件甚至不知道后端服务器,这是反向代理的技巧。
我(认为我)能够操作代理,因为我收到了
AH02268:代理客户端证书回调:(localhost:80)下游服务器想要客户端证书,但没有配置所以我不明白代理正在尝试调用后端,但最后一个抱怨代理没有通过他也证书。
所以我想念正确配置证书。AFAIK 我必须编译conf.d/modes-enabled/ssl.conf
. 我试过这种方式
SSLRandomSeed startup file:/dev/urandom 256
SSLRandomSeed connect builtin
SSLEngine off
SSLProxyEngine on
SSLProtocol all
# proxy
SSLProxyMachineCertificateFile /usr/local/etc/apache2/ssl.crt/certificate.pem
SSLProxyMachineCertificateChainFile /usr/local/etc/apache2/ssl.crt/chain.pem
SSLProxyCACertificateFile /usr/local/etc/apache2/ssl.crt/ca.pem
# certificate
SSLCipherSuite DEFAULT:!EXP:!SSLv2:!DES:!IDEA:!SEED:+3DES
SSLCertificateFile /usr/local/etc/apache2/ssl.crt/all.pem
SSLCertificateChainFile /usr/local/etc/apache2/ssl.crt/certificate.pem
# key
SSLCertificateKeyFile /usr/local/etc/apache2/ssl.key/server.key
SSLPassPhraseDialog exec:/usr/local/etc/apache2/pwf.sh
几点注意事项:
certificate.pem
是服务器证书。chain.pem
是证书的中间链,不包括边界。ca.pem
是根 CA 证书。server.key
是 RSA 私钥
我用 pwf.sh 脚本替换了用于输入密码的正常对话模式但是我什至无法启动 apache,因为我有这个消息
AH02252:为 SSL 代理配置的客户端证书不完整(丢失或加密的私钥?) [ssl:emerg] [pid 12484]
AH02312:初始化 mod_ssl 时出现致命错误,正在退出。AH00016: 配置失败
现在我(遗憾地)读到没有办法克服这个问题,因为正如 apache.org 网站所说,在所有 SSLProxyMachine* 指令下:
(目前不支持加密私钥)
我迷路了吗?
您已经意识到不支持加密的私钥。如果您坚持使用加密的私钥,您将迷失方向。如果可以接受以明文形式提供私钥,请执行此操作。要将加密的私钥转换为明文密钥,请使用(用于 RSA 密钥)