我有以下dockerfile:
FROM alpine:3.8
RUN apk add --no-cache apache2 apache2-ssl php7-cli php7-apache2 php7-openssl
RUN mkdir /run/apache2/ && \
echo '<?php \
var_dump(openssl_get_cipher_methods());' >
/var/www/localhost/htdocs/index.php
CMD ["httpd", "-DFOREGROUND"]现在,当我通过apache访问index.php时,我看到了40个密码,当我用
docker run --rm -p sample php /var/www/localhost/htdocs/index.php我看到了180个密码。如果我删除apache2-ssl包并重试,通过apache我现在可以看到所有的180个密码。我已经尝试在mod_ssl指令上启用所有密码,但没有任何帮助。我对AES (CTR,OFB,CFB)的流密码特别感兴趣
谢谢
发布于 2018-08-15 19:13:50
您会看到更少的密码,因为apache2-ssl具有带有SSLCipherSuite过滤器的默认配置。
/etc/apache2/conf.d/ssl.conf
SSLCipherSuite高:中:!MD5:!RC4:!3DES:!ADH
apache2-ssl包依赖于libressl,而不是openssl。libressl是openssl的一个分支,基本上是兼容的。使用命令openssl ciphers可以显示openssl和libressl的密码套件
php7-openssl是一个php模块,最初是针对openssl编写的。在Alpine 3.8中,php7是使用选项--with-system-ciphers https://git.alpinelinux.org/cgit/aports/tree/community/php7/APKBUILD?h=3.8-stable#n290编译的
除非配置了显式密码列表,否则将使用php7-openssl的默认密码列表,而无需验证/lib/libssl.so https://github.com/php/php-src/blob/PHP-7.2.8/ext/openssl/xp_ssl.c#L1608是否真的支持它们
php7-openssl中的默认密码列表在https://github.com/php/php-src/blob/PHP-7.2.8/ext/openssl/php_openssl.h#L61中定义
我假设您可以根据配置文件http://php.net/manual/en/context.ssl.php#context.ssl.ciphers在/etc/php7/conf.d/00_openssl.ini中指定密码列表
要支持AES块加密模式CTR、OFB、CFB,/lib/ssl.so库必须支持它们,因此可能需要重新构建libressl2.7-libssl
https://stackoverflow.com/questions/51759676
复制相似问题