带自签名证书的 Squid Peek/Bump/Splice

带自签名证书的 Squid Peek/Bump/Splice

TL:博士; Squid v5.7 未在生成的证书中包含颁发者

过去我可以通过以下方式进行 HTTPS 数据缓存:

  1. 构建鱿鱼:
VERSION='4.11' ./configure --with-openssl --enable-ssl-crtd' ...
  1. 并创建自签名证书
sudo openssl req -new -newkey rsa:2048 -nodes \
-x509 -sha256 -extensions v3_ca -days 365 \
-keyout squid-ca-key.pem -out squid-ca-cert.pem \
-subj "/C=AU/ST=WA/L=Perth/O=ACME Pty Ltd/OU=Innovation/CN=squid.d2i.net.au/[email protected]"
  1. 将所有权更改为代理用户squid(redhat) 或proxy(ubuntu)

  2. 并设置squid.conf

http_port 3128 \
  ssl-bump \
  generate-host-certificates=on \
  dynamic_cert_mem_cache_size=4MB \
  cert=/opt/squid-4.11/certs/squid-ca-cert-key.pem

sslcrtd_program /opt/squid-4.11/lib/security_file_certgen \
   -s /opt/squid-4.11/var/swap/ssl_db -M 16MB

acl step1 at_step SslBump1
ssl_bump peek step1
ssl_bump bump all
ssl_bump splice all

然而,最近 Squid v5.7 的设置给我带来了 Squid 的困难,尽管动态生成证书一直将值留空Issuer:。从输出中可以看到openssl s_client空证书颁发者

下载文件的完整示例是:

openssl s_client \
-proxy squid.d2i.net.au:3128 -servername github.com \
-connect https://github.com/neovim/neovim/releases/download/v0.4.4/nvim-linux64.tar.gz

尝试下载文件

有没有想过为什么 Squid 服务可能无法向我的客户端提供有效的证书?以下服务curl返回了如下错误:

sudo curl --proxy squid.d2i.net.au:3128 https://github.com

curl:(60)SSL:无法获取 X509 颁发者名称更多详细信息请参见:https://curl.se/docs/sslcerts.html curl 无法验证服务器的合法性,因此无法与其建立安全连接。要了解有关此情况以及如何解决此问题的更多信息,请访问上述网页。

答案1

这比我预期的要容易:我忘记添加-subj创建证书的标志,或者当我第一次在 Ansible 中执行此操作时,我需要 common_name 值(尽管它已成功创建):

- name: Create certificate signing request (CSR) for new certificate
  community.crypto.openssl_csr_pipe:
    common_name: "{{ inventory_hostname }} personal computer"
    privatekey_path: "{{ key_dir }}/{{ inventory_hostname }}.key"
    basic_constraints:
      - 'CA:TRUE'
      - 'pathlen:0'
    basic_constraints_critical: yes
    subject_alt_name:
      - "DNS:{{ inventory_hostname }}.localdomain"
  run_once: true
  register: csr

相关内容