![Как заставить прокси-сервер Squid принимать самоподписанный сертификат?](https://rvso.com/image/776306/%D0%9A%D0%B0%D0%BA%20%D0%B7%D0%B0%D1%81%D1%82%D0%B0%D0%B2%D0%B8%D1%82%D1%8C%20%D0%BF%D1%80%D0%BE%D0%BA%D1%81%D0%B8-%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80%20Squid%20%D0%BF%D1%80%D0%B8%D0%BD%D0%B8%D0%BC%D0%B0%D1%82%D1%8C%20%D1%81%D0%B0%D0%BC%D0%BE%D0%BF%D0%BE%D0%B4%D0%BF%D0%B8%D1%81%D0%B0%D0%BD%D0%BD%D1%8B%D0%B9%20%D1%81%D0%B5%D1%80%D1%82%D0%B8%D1%84%D0%B8%D0%BA%D0%B0%D1%82%3F.png)
У меня есть вариант использования, в котором мне нужно принять самоподписанный сертификат в Squid. Конечные точки — кластеры Kubernetes, использующие самоподписанные сертификаты. Кластеры будут воссозданы по требованию с другим самоподписанным сертификатом, и поэтому необходимо принять их с помощью регулярного выражения, предпочтительным способом или глобально для целей тестирования.
Текущая версия Squid — 6.0.0, скомпилированная со следующими флагами:
Squid Cache: Version 6.0.0-VCS
Service Name: squid
This binary uses OpenSSL 1.1.1 11 Sep 2018. For legal restrictions on distribution see https://www.openssl.org/source/license.html
configure options: '--prefix=/apps/squid' '--enable-icap-client' '--enable-ssl' '--with-openssl' '--enable-ssl-crtd' '--enable-security-cert-generators=file' '--enable-au
th' '--with-default-user=proxy'
В своих тестах я экспериментировал с конфигурациями ssl_bump и tls_outgoing_options:
http_port 8080 ssl-bump cert=/apps/squid/etc/ssl_cert/CA_crt.pem key=/apps/squid/etc/ssl_cert/CA_key.pem generate-host-certificates=on dynamic_cert_mem_cache_size=4MB
sslcrtd_program /apps/squid/libexec/security_file_certgen -s /apps/squid/var/logs/ssl_db -M 4MB
sslcrtd_children 5
ssl_bump bump all
sslproxy_cert_error allow all
tls_outgoing_options options=ALL flags=DONT_VERIFY_PEER,DONT_VERIFY_DOMAIN
Но лучший результат, которого я могу достичь, это_curl: (51) SSL: no alternative certificate subject name matches target host name
Или без ssl_bump
http_port 8080 ssl-bump cert=/apps/squid/etc/ssl_cert/CA_crt.pem key=/apps/squid/etc/ssl_cert/CA_key.pem generate-host-certificates=on dynamic_cert_mem_cache_size=4MB
sslcrtd_program /apps/squid/libexec/security_file_certgen -s /apps/squid/var/logs/ssl_db -M 4MB
sslcrtd_children 5
sslproxy_cert_error allow all
tls_outgoing_options options=ALL flags=DONT_VERIFY_PEER,DONT_VERIFY_DOMAIN
Я получилcurl: (35) OpenSSL SSL_connect: SSL_ERROR_SYSCALL in connection to
Сегодня мне нужны конечные точки K8S, но завтра могут быть любые другие конечные точки, поэтому может возникнуть необходимость заставить Squid создать соединение, обманывая CN.