如何使用证书、Apache httpd 和 ngrok 保护对本地服务器的访问?

如何使用证书、Apache httpd 和 ngrok 保护对本地服务器的访问?

假如我们有以下场景:

  • Ubuntu 18.04.5 LTS 机器
  • 在此机器的端口上运行的第三方服务器10000,并且已经配置了自签名certificate(https://localhost:10000)
  • 一个将端口暴露给世界的ngroktcp隧道(10000https://0.tcp.ngrok.io:1234/

我们如何配置 Apache httpd 服务器,以便只有具有相同证书的客户端才能访问并查看 ngrok 公共 URL 的内容(https://0.tcp.ngrok.io:1234/)?

我尝试过的一些方法包括

  • 将证书复制到/etc/apache2/ssl
  • 使用以下命令启用 ssl 模块a2enmod ssl
  • 配置为/etc/apache2/sites-available/000-default.conf具有如下部分:
<VirtualHost *:443>
  SSLEngine on
  SSLCertificateFile /etc/apache2/ssl/cert.pem
  SSLCertificateKeyFile /etc/apache2/ssl/key.pem

  SSLVerifyClient require
  SSLCACertificatePath /etc/ssl/certs
  SSLCACertificateFile /etc/apache2/ssl/cert.pem
  SSLCADNRequestFile /etc/apache2/ssl/cert.pem
  SSLVerifyDepth 1

    SetEnvIf User-Agent ".*MSIE.*" nokeepalive ssl-unclean-shutdown
  ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/ssl_request_log \
    "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
</VirtualHost>
  • 重新启动 Apache 服务器service apache2 restart

但不幸的是,这还不起作用。我是否应该将策略更改为其他策略?

相关内容