TL:博士; Squid v5.7 未在生成的证书中包含颁发者
过去我可以通过以下方式进行 HTTPS 数据缓存:
- 构建鱿鱼:
VERSION='4.11' ./configure --with-openssl --enable-ssl-crtd' ...
- 并创建自签名证书
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]"
将所有权更改为代理用户
squid
(redhat) 或proxy
(ubuntu)并设置
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