Проблема виглядає наступним чином: є зібраний nginx з openssl-3, але є старі клієнтські сертифікати з ключам 1024 біта і відповідно, стандартним чином воно не працює, бо для openssl-3 ключ повинен бути мінімум 2048 біт і маємо помилку:
"FAILED:CA certificate key too weak"
Рішення просте – CipherString = DEFAULT@SECLEVEL=0, але не хочеться ламати все інше на цьому хості, тому просто так вставити це в /etc/ssl/openssl.cnf не можна.
Виявляється, можна через ENV в nginx передавати OPENSSL_CONF, де вказати шлях до кастомного файлу openssl.cnf.
Створюємо /etc/nginx/ssl/admin/openssl.cnf такого змісту:
[openssl_init]
providers = provider_sect
alg_section = evp_properties
ssl_conf = ssl_configuration
...
[ssl_configuration]
system_default = tls_system_default
[tls_system_default]
MinProtocol = TLSv2
CipherString = DEFAULT@SECLEVEL=0
Додаємо ENV до сервісу:
# svccfg -s nginx setenv OPENSSL_CONF /etc/nginx/ssl/admin/openssl.cnf
# svcadm refresh nginx
# svcadm restart nginx
І перевіряємо чи використовує його nginx:
# /usr/dtrace/DTT/opensnoop | grep openssl.cnf
0 539319 nginx 4 /etc/nginx/ssl/admin/openssl.cnf