diff --git a/Misc/NEWS.d/next/Windows/2023-07-11-20-48-17.gh-issue-99079.CIMftz.rst b/Misc/NEWS.d/next/Windows/2023-07-11-20-48-17.gh-issue-99079.CIMftz.rst
new file mode 100644
index 00000000000..11f411be0f1
--- /dev/null
+++ b/Misc/NEWS.d/next/Windows/2023-07-11-20-48-17.gh-issue-99079.CIMftz.rst
@@ -0,0 +1 @@
+Update Windows build to use OpenSSL 3.0.9
diff --git a/PCbuild/get_externals.bat b/PCbuild/get_externals.bat
index 3a6f616f279..257b360ba35 100644
--- a/PCbuild/get_externals.bat
+++ b/PCbuild/get_externals.bat
@@ -53,7 +53,7 @@ echo.Fetching external libraries...
set libraries=
set libraries=%libraries% bzip2-1.0.8
if NOT "%IncludeLibffiSrc%"=="false" set libraries=%libraries% libffi-3.4.4
-if NOT "%IncludeSSLSrc%"=="false" set libraries=%libraries% openssl-1.1.1u
+if NOT "%IncludeSSLSrc%"=="false" set libraries=%libraries% openssl-3.0.9
set libraries=%libraries% sqlite-3.42.0.0
if NOT "%IncludeTkinterSrc%"=="false" set libraries=%libraries% tcl-core-8.6.13.0
if NOT "%IncludeTkinterSrc%"=="false" set libraries=%libraries% tk-8.6.13.0
@@ -76,7 +76,7 @@ echo.Fetching external binaries...
set binaries=
if NOT "%IncludeLibffi%"=="false" set binaries=%binaries% libffi-3.4.4
-if NOT "%IncludeSSL%"=="false" set binaries=%binaries% openssl-bin-1.1.1u
+if NOT "%IncludeSSL%"=="false" set binaries=%binaries% openssl-bin-3.0.9
if NOT "%IncludeTkinter%"=="false" set binaries=%binaries% tcltk-8.6.13.0
if NOT "%IncludeSSLSrc%"=="false" set binaries=%binaries% nasm-2.11.06
diff --git a/PCbuild/openssl.props b/PCbuild/openssl.props
index 7071bb57c06..5fd708b211e 100644
--- a/PCbuild/openssl.props
+++ b/PCbuild/openssl.props
@@ -10,10 +10,10 @@
- <_DLLSuffix>-1_1
+ <_DLLSuffix>-3
<_DLLSuffix Condition="$(Platform) == 'ARM'">$(_DLLSuffix)-arm
<_DLLSuffix Condition="$(Platform) == 'ARM64'">$(_DLLSuffix)-arm64
- $(_DLLSuffix)
+ $(_DLLSuffix)
<_SSLDLL Include="$(opensslOutDir)\libcrypto$(_DLLSuffix).dll" />
diff --git a/PCbuild/python.props b/PCbuild/python.props
index 68052ef668a..d3586235c82 100644
--- a/PCbuild/python.props
+++ b/PCbuild/python.props
@@ -74,8 +74,8 @@
$(ExternalsDir)libffi-3.4.4\
$(libffiDir)$(ArchName)\
$(libffiOutDir)include
- $(ExternalsDir)openssl-1.1.1u\
- $(ExternalsDir)openssl-bin-1.1.1u\$(ArchName)\
+ $(ExternalsDir)openssl-3.0.9\
+ $(ExternalsDir)openssl-bin-3.0.9\$(ArchName)\
$(opensslOutDir)include
$(ExternalsDir)\nasm-2.11.06\
$(ExternalsDir)\zlib-1.2.13\
diff --git a/PCbuild/readme.txt b/PCbuild/readme.txt
index 88b04a749e3..f0de142f057 100644
--- a/PCbuild/readme.txt
+++ b/PCbuild/readme.txt
@@ -168,7 +168,7 @@ _lzma
Homepage:
https://tukaani.org/xz/
_ssl
- Python wrapper for version 1.1.1u of the OpenSSL secure sockets
+ Python wrapper for version 3.0 of the OpenSSL secure sockets
library, which is downloaded from our binaries repository at
https://github.com/python/cpython-bin-deps.
diff --git a/PCbuild/regen.targets b/PCbuild/regen.targets
index e9e16a15f94..2dd786e5e82 100644
--- a/PCbuild/regen.targets
+++ b/PCbuild/regen.targets
@@ -104,8 +104,9 @@
<_LicenseSources Include="$(PySourcePath)LICENSE;
$(PySourcePath)PC\crtlicense.txt;
$(bz2Dir)LICENSE;
- $(opensslOutDir)LICENSE;
$(libffiDir)LICENSE;" />
+ <_LicenseSources Include="$(opensslOutDir)LICENSE.txt" Condition="Exists('$(opensslOutDir)LICENSE.txt')" />
+ <_LicenseSources Include="$(opensslOutDir)LICENSE" Condition="!Exists('$(opensslOutDir)LICENSE.txt')" />
<_LicenseSources Include="$(tcltkDir)tcllicense.terms;
$(tcltkDir)tklicense.terms" Condition="$(IncludeTkinter)" />