diff --git a/docs/changes.xml b/docs/changes.xml
index f4e3f65e..59c55fea 100644
--- a/docs/changes.xml
+++ b/docs/changes.xml
@@ -43,6 +43,12 @@ prefer system crypto policy, instead of hardcoding a default.
+
+
+compatibility with OpenSSL 3.
+
+
+
compatibility with PHP 8.2.
diff --git a/src/nxt_openssl.c b/src/nxt_openssl.c
index 32904660..55611511 100644
--- a/src/nxt_openssl.c
+++ b/src/nxt_openssl.c
@@ -1777,7 +1777,11 @@ nxt_openssl_copy_error(u_char *p, u_char *end)
clear = 0;
for ( ;; ) {
+#if OPENSSL_VERSION_NUMBER >= 0x30000000L
+ err = ERR_get_error_all(NULL, NULL, NULL, &data, &flags);
+#else
err = ERR_get_error_line_data(NULL, NULL, &data, &flags);
+#endif
if (err == 0) {
break;
}