首页 > 解决方案 > 选择正确的客户端证书 - https - ssl 相关

问题描述

我有这种情况

如何将 Let'sEncrypt 证书用于客户端,而将 StrangeCert 用于 beta.com?任何建议都是有帮助的,除了要求 beta.com 提供另一个证书,这是不可能的。

阿帕奇代理?iptables?还有什么?

标签: apachessl

解决方案


我找到了解决方案!使用 iptables 和 NAT 链,我可以在 Apache 的另一个虚拟主机部分重定向 beta.com SSL 请求,让“另一个世界”的一面保持不变。

  • 网络上的每个客户端都访问 alfa.com:443 并使用 Let'sEncrypt 证书进行正常、完美的握手。虚拟主机配置

<VirtualHost *:443>
ServerName alfa.com
ServerAlias www.alfa.com
....
SSLCertificateFile /var/www/clients/client1/ssl/sitecert-le.crt
SSLCertificateKeyFile /var/www/clients/client1/ssl/sitecert -le.key
....
</VirtualHost>

  • 只有 beta.com 对应的源网络(比如 1.2.3.0/24)通过 iptables 中的 trought NAT 链并转到 alfa.com:8080

<VirtualHost *:8080>
ServerName alfa.com
ServerAlias www.alfa.com
....
SSLCertificateFile /var/www/clients/client1/ssl/beta.com.crt
SSLCertificateKeyFile /var/www/clients/client1/ssl/beta .com.key
....
</VirtualHost>

  • 这是相关的 iptables 命令

iptables -t nat -A PREROUTING -p tcp -s 1.2.3.0/20 --dport 443 -j DNAT --to-destination 192.168.1.10:8080
iptables -t nat -A POSTROUTING -p tcp -d 192.168.1.10 - -dport 8080 -j SNAT --to-source 192.168.1.10

  • 当然,如果只允许 beta.com 网络看到 alfa.com:8080,我们可以拒绝彼此的访问

iptables -A 输入 -s !1.2.3.0/20 -p tcp --destination-port 8080 -j DROP


推荐阅读