LINUX.ORG.RU
решено ФорумAdmin

SQID с подменой сертификатов

 , , ,


0

1

Поставил и настроил squid, чтобы кэшировать https траф из-за очень плохого соединения к инету. Юзеров много, а канал тощий.
Так вот, некоторые сайты ругаются на отсутствующий сертификат. Например сайт zabbix выдаёт такое:

www.zabbix.com использует недействительный сертификат безопасности. Сертификат действителен только для 104.24.103.152

Нашел частичное решение на лоре, но меня не очень устраивает ручное добавление таких сайтов в конфиг игнора.
Может есть какой-то патч или решение поудобней ?

Deleted

Пока вот такую конструкцию использую:

acl mism_cert dstdomain -i "/etc/squid/lists/mism_ssl"
acl redir dstdomain gmail.com
acl redir dstdomain www.gmail.com
acl noredir dstdomain mail.google.com
acl noredir2 url_regex mail\.google\.com
sslproxy_cert_error allow mism_cert
sslproxy_cert_adapt setCommonName{*.gmail.com} redir !noredir2 !noredir
sslproxy_cert_adapt setCommonName ssl::certDomainMismatch !redir

Deleted
()
Ответ на: комментарий от aidaho

Пересоздал сертификат без CN, не помогло.

Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number:
            81:db:37:8c:32:c2:f6:4b
    Signature Algorithm: sha256WithRSAEncryption
        Issuer: C = AU, ST = Some-State, O = Internet Widgits Pty Ltd
        Validity
            Not Before: May 29 16:32:22 2018 GMT
            Not After : May 26 16:32:22 2028 GMT
        Subject: C = AU, ST = Some-State, O = Internet Widgits Pty Ltd
        Subject Public Key Info:
            Public Key Algorithm: rsaEncryption
                Public-Key: (2048 bit)
                Modulus:
                    00:da:be:0a:21:46:c6:2c:1c:ab:36:9e:64:c9:6c:
                    20:34:97:7a:92:2a:04:4b:c4:9f:7f:0e:af:35:76:
                    b2:9b:32:ab:56:3a:9e:3e:d9:6d:4b:cb:d3:1a:26:
                    53:ca:4a:5b:de:77:44:3a:49:a2:04:f8:d3:dc:5b:
                    89:ba:00:ea:d8:0a:4b:93:8a:15:99:9c:fb:2a:a7:
                    10:d1:3a:43:e5:8e:5b:21:d1:e1:8b:46:e1:47:24:
                    5b:07:b5:bb:f1:ae:b0:99:60:00:c1:63:c7:6c:52:
                    ba:5b:f5:7d:22:d6:6f:12:81:b1:32:39:b2:4f:e9:
                    ec:79:1a:4a:a0:65:b7:1a:d8:3b:8a:f0:33:a4:93:
                    7f:cd:7d:33:04:c8:64:11:52:0f:98:a4:17:bd:cf:
                    54:08:ce:a5:6e:53:25:70:4a:b2:67:11:3c:f4:35:
                    7b:dd:23:4c:de:95:c2:4f:5b:f5:5c:65:51:8d:42:
                    40:7a:96:35:6b:c2:4d:3c:96:35:0c:91:fb:87:8c:
                    4f:ab:64:e7:bf:c3:d1:ce:01:8d:ea:72:ef:7c:2a:
                    56:e2:bb:ac:67:0e:cf:6d:2c:10:62:1d:62:a4:ef:
                    2a:ab:ee:02:1f:13:65:d0:a4:d8:af:9d:81:8c:7f:
                    f1:56:1f:04:ed:dd:e1:2c:aa:bb:01:21:82:fc:9f:
                    71:9b
                Exponent: 65537 (0x10001)
        X509v3 extensions:
            X509v3 Subject Key Identifier:
                D1:41:AE:2F:3C:F7:E5:19:E8:51:6E:7B:6F:B2:CA:E1:89:A1:6F:40
            X509v3 Authority Key Identifier:
                keyid:D1:41:AE:2F:3C:F7:E5:19:E8:51:6E:7B:6F:B2:CA:E1:89:A1:6F:40

            X509v3 Basic Constraints: critical
                CA:TRUE
    Signature Algorithm: sha256WithRSAEncryption
         99:33:ef:c6:af:6d:6a:6a:5c:24:26:00:2a:bf:04:74:61:df:
         c4:b3:2d:f3:69:85:13:67:ea:71:cd:a2:fa:a1:54:64:43:9a:
         06:e3:75:c5:39:30:0f:fe:92:73:db:39:06:58:17:83:b9:ca:
         ee:cd:c2:68:79:ff:93:e3:9e:2f:a0:09:6e:bd:df:ef:7d:88:
         0f:45:9b:93:90:4c:ef:f2:61:f5:29:7b:51:49:73:96:69:de:
         04:f7:52:2d:00:28:04:e7:3e:5d:1f:f2:11:50:a2:53:9d:72:
         22:8e:52:da:84:cf:ce:8b:bb:ba:d6:2e:60:bc:53:4b:98:54:
         41:0d:d0:c4:d1:e1:3d:3e:09:29:b8:1f:a4:74:11:66:9a:6b:
         2d:2a:67:cd:96:9c:ee:85:78:67:dc:30:3f:35:7c:c1:3d:4b:
         25:67:99:d8:6e:2f:30:69:2b:72:43:1a:fe:cd:ca:83:db:f0:
         a7:b9:e3:91:c8:c8:43:90:e2:ba:85:f4:c3:2d:8b:30:f7:10:
         d3:6a:74:9c:0b:38:85:fb:9d:62:87:f0:25:96:e2:a9:3c:52:
         bb:d4:02:aa:28:88:36:d7:ac:ed:e7:e8:d8:72:6d:5a:87:0a:
         bd:03:85:73:29:1c:ae:e3:91:45:dc:b5:0a:4e:d6:27:12:64:
         f1:57:dd:27

Deleted
()
Ответ на: комментарий от aidaho

Да, если я правильно понимаю, то
sslcrtd_program /usr/lib/squid/ssl_crtd -s /var/lib/ssl_db -M 16MB
эта строка в конфиге чистит кэш.

Deleted
()
Ответ на: комментарий от aidaho

Вот весь конфиг без подробностей по настройкам кэширования:

acl SSL_ports port 443
acl Safe_ports port 80          # http
acl Safe_ports port 21          # ftp
acl Safe_ports port 443         # https
acl Safe_ports port 70          # gopher
acl Safe_ports port 210         # wais
acl Safe_ports port 1025-65535  # unregistered ports
acl Safe_ports port 280         # http-mgmt
acl Safe_ports port 488         # gss-http
acl Safe_ports port 591         # filemaker
acl Safe_ports port 777         # multiling http

acl local src 192.168.15.0/24

dns_v4_first on
tcp_outgoing_address 0.0.0.0 all

acl CONNECT method CONNECT

acl mism_cert dstdomain -i "/etc/squid/lists/mism_ssl"
acl redir dstdomain gmail.com
acl redir dstdomain www.gmail.com
acl noredir dstdomain mail.google.com
acl noredir2 url_regex mail\.google\.com
sslproxy_cert_error allow mism_cert
sslproxy_cert_adapt setCommonName{*.gmail.com} redir !noredir2 !noredir
sslproxy_cert_adapt setCommonName ssl::certDomainMismatch !redir

http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access allow localhost manager
http_access deny manager
http_access allow localhost
http_access allow local
http_access deny all

http_port 192.168.15.1:8080
http_port 192.168.15.1:3128 intercept
https_port 192.168.15.1:3129 intercept ssl-bump generate-host-certificates=on dynamic_cert_mem_cache_size=8MB cert=/etc/squid/squidCA.pem key=/etc/squid/squidCA.pem
ssl_bump server-first all
visible_hostname squid
sslcrtd_program /usr/lib/squid/ssl_crtd -s /var/lib/ssl_db -M 16MB
sslcrtd_children 16 startup=1 idle=1

coredump_dir /var/spool/squid

refresh_pattern . 14400 50% 14400 store-stale

cache_dir ufs /var/spool/squid 20480 16 256
maximum_object_size 100 MB
#reload_into_ims on
cache_mem 2048 MB
maximum_object_size_in_memory 256 MB
dns_nameservers 127.0.0.1

Deleted
()

Вот чего нашел на https://wiki.squid-cache.org/Features/DynamicSslCert :

While SslBump itself works fine in transparent redirection environments (e.g. those using WCCP or iptables), dynamic certificate generation does not: To generate the certificate dynamically, Squid must know the server domain name. That information is not available at the time the HTTPS client TCP connection is intercepted and bumped. Currently, you cannot use dynamic certificate generation for transparent connections until bump-server-first is supported.

Попробовал peek-n-splice, но не кэширует https.
Прозрачный прокси для меня не обязателен, но не пойму как его для https с кэшированием запустить.

Deleted
()
Ответ на: комментарий от Deleted

Эта строка запускает ssl_crtd. Он уже сделал и схоронил сертификат. Теперь не пошевелится, пока источник не поменяет свой.
Чистить и пересоздавать его базу надо руками.

Конфиг сквида вообще не причём, надо просто разобраться, откуда левая запись в CN.

aidaho ★★★★★
()
Последнее исправление: aidaho (всего исправлений: 1)
Ответ на: комментарий от aidaho

Почистил так
rm -rf /var/lib/ssl_db/var/lib/ssl_db/*
не помогло.
Штука в том, что для большинства сайтов всё нормально работает, но некоторые сайты не хотят с таким конфигом открываться.

Deleted
()
Ответ на: комментарий от Deleted

Так может сам сервер такое отдал? Пока он за CloudFlare прячется, всё хорошо, но прямой ответ с забитым ip-адресом.

aidaho ★★★★★
()
Ответ на: комментарий от aidaho

Не, это такая фича кальмара при прозрачном проксировании. А как сделать непрозрачное для https с кэшированием, я понять не могу. Убираю intercept и кальмар не запускается.

Deleted
()
Ответ на: комментарий от Deleted

Поменял ssl_bump server-first all на

acl step1 at_step SslBump1
ssl_bump peek step1
ssl_bump bump all
всё работает как хотелось.

Deleted
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.