Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Use OpenSSL 3.2 across all PHP versions #139

Closed
wants to merge 1 commit into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 13 additions & 0 deletions layers/openssl3.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
Patch for OpenSSL 3 support for PHP 8.0
--- a/ext/openssl/openssl.c
+++ b/ext/openssl/openssl.c
@@ -1325,7 +1325,9 @@
REGISTER_LONG_CONSTANT("OPENSSL_CMS_NOSIGS", CMS_NOSIGS, CONST_CS|CONST_PERSISTENT);

REGISTER_LONG_CONSTANT("OPENSSL_PKCS1_PADDING", RSA_PKCS1_PADDING, CONST_CS|CONST_PERSISTENT);
+#ifdef RSA_SSLV23_PADDING
REGISTER_LONG_CONSTANT("OPENSSL_SSLV23_PADDING", RSA_SSLV23_PADDING, CONST_CS|CONST_PERSISTENT);
+#endif
REGISTER_LONG_CONSTANT("OPENSSL_NO_PADDING", RSA_NO_PADDING, CONST_CS|CONST_PERSISTENT);
REGISTER_LONG_CONSTANT("OPENSSL_PKCS1_OAEP_PADDING", RSA_PKCS1_OAEP_PADDING, CONST_CS|CONST_PERSISTENT);

9 changes: 7 additions & 2 deletions php-80/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -103,13 +103,14 @@ RUN set -xe; \
# Needed by:
# - curl
# - php
ENV VERSION_OPENSSL=1.1.1w
RUN yum install -y perl-IPC-Cmd
ENV VERSION_OPENSSL=3.2.0
ENV OPENSSL_BUILD_DIR=${BUILD_DIR}/openssl
ENV CA_BUNDLE_SOURCE="https://curl.se/ca/cacert.pem"
ENV CA_BUNDLE="${INSTALL_DIR}/bref/ssl/cert.pem"
RUN set -xe; \
mkdir -p ${OPENSSL_BUILD_DIR}; \
curl -Ls https://github.com/openssl/openssl/archive/OpenSSL_${VERSION_OPENSSL//./_}.tar.gz \
curl -Ls https://github.com/openssl/openssl/releases/download/openssl-${VERSION_OPENSSL}/openssl-${VERSION_OPENSSL}.tar.gz \
| tar xzC ${OPENSSL_BUILD_DIR} --strip-components=1
WORKDIR ${OPENSSL_BUILD_DIR}/
RUN CFLAGS="" \
Expand Down Expand Up @@ -384,6 +385,10 @@ ARG VERSION_PHP
RUN curl --location --silent --show-error --fail https://www.php.net/get/php-${VERSION_PHP}.tar.gz/from/this/mirror \
| tar xzC . --strip-components=1

COPY layers/openssl3.patch ${PHP_BUILD_DIR}
RUN patch -N -p1 -s < openssl3.patch
RUN rm openssl3.patch
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

As mentioned on Slack can you remove the patching for PHP 8.0?

My reasoning is:

  • 8.0 is no longer maintained (even security fixes)
  • this complicates the build

I'd rather keep things simple and keep 8.0 mostly for BC.

If you don't have time for this let me know, I can create a new PR based on this one.


# Configure the build
# -fstack-protector-strong : Be paranoid about stack overflows
# -fpic : Make PHP's main executable position-independent (improves ASLR security mechanism, and has no performance impact on x86_64)
Expand Down
2 changes: 1 addition & 1 deletion php-81/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -104,7 +104,7 @@ RUN set -xe; \
# - curl
# - php
RUN yum install -y perl-IPC-Cmd
ENV VERSION_OPENSSL=3.0.12
ENV VERSION_OPENSSL=3.2.0
ENV OPENSSL_BUILD_DIR=${BUILD_DIR}/openssl
ENV CA_BUNDLE_SOURCE="https://curl.se/ca/cacert.pem"
ENV CA_BUNDLE="${INSTALL_DIR}/bref/ssl/cert.pem"
Expand Down
2 changes: 1 addition & 1 deletion php-82/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -104,7 +104,7 @@ RUN set -xe; \
# - curl
# - php
RUN yum install -y perl-IPC-Cmd
ENV VERSION_OPENSSL=3.0.12
ENV VERSION_OPENSSL=3.2.0
ENV OPENSSL_BUILD_DIR=${BUILD_DIR}/openssl
ENV CA_BUNDLE_SOURCE="https://curl.se/ca/cacert.pem"
ENV CA_BUNDLE="${INSTALL_DIR}/bref/ssl/cert.pem"
Expand Down
2 changes: 1 addition & 1 deletion php-83/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -104,7 +104,7 @@ RUN set -xe; \
# - curl
# - php
RUN yum install -y perl-IPC-Cmd
ENV VERSION_OPENSSL=3.0.12
ENV VERSION_OPENSSL=3.2.0
ENV OPENSSL_BUILD_DIR=${BUILD_DIR}/openssl
ENV CA_BUNDLE_SOURCE="https://curl.se/ca/cacert.pem"
ENV CA_BUNDLE="${INSTALL_DIR}/bref/ssl/cert.pem"
Expand Down
2 changes: 1 addition & 1 deletion tests/test_2_extensions.php
Original file line number Diff line number Diff line change
Expand Up @@ -81,7 +81,7 @@
// https://github.com/brefphp/aws-lambda-layers/issues/42
'curl-http2' => defined('CURL_HTTP_VERSION_2'),
// Make sure we are not using the default AL2 OpenSSL version (7.79)
'curl-openssl' => str_starts_with(curl_version()['ssl_version'], 'OpenSSL/1.1.1') || str_starts_with(curl_version()['ssl_version'], 'OpenSSL/3.0'),
'curl-openssl' => str_starts_with(curl_version()['ssl_version'], 'OpenSSL/3.2'),
// Check that the default certificate file exists
// https://github.com/brefphp/aws-lambda-layers/issues/53
'curl-openssl-certificates' => file_exists(openssl_get_cert_locations()['default_cert_file']),
Expand Down
Loading