Unable to download and install plugins

Hello,

Can someone please help me with an issue I’m currently facing? I have installed Jenkins (Version 2.528.1) on a Windows Server 2022 instance in Azure. I have whitelisted the jenkins URLs in the Azure firewall to allow outbound traffic.

I am able to run test-netconnection from Jenkins controller successfully.

PS C:\Users\skatta> Test-NetConnection -ComputerName updates.jenkins.io -Port 443

ComputerName : updates.jenkins.io
RemoteAddress : 128.24.70.119
RemotePort : 443
InterfaceAlias : Ethernet
SourceAddress : xx.xx.xx.xx
TcpTestSucceeded : True

However, when I try to install plugins, I encounter the error below. Any help in resolving this issue would be greatly appreciated.

Thank you.

2025-10-29 16:56:23.237+0000 [id=47] INFO hudson.util.Retrier#start: The attempt #1 to do the action check updates server failed with an allowed exception:
java.io.EOFException: SSL peer shut down incorrectly
at java.base/sun.security.ssl.SSLSocketInputRecord.read(SSLSocketInputRecord.java:483)
at java.base/sun.security.ssl.SSLSocketInputRecord.readHeader(SSLSocketInputRecord.java:472)
at java.base/sun.security.ssl.SSLSocketInputRecord.decode(SSLSocketInputRecord.java:160)
at java.base/sun.security.ssl.SSLTransport.decode(SSLTransport.java:111)
at java.base/sun.security.ssl.SSLSocketImpl.decode(SSLSocketImpl.java:1500)
Caused: javax.net.ssl.SSLHandshakeException: Remote host terminated the handshake
at java.base/sun.security.ssl.SSLSocketImpl.handleEOF(SSLSocketImpl.java:1709)
at java.base/sun.security.ssl.SSLSocketImpl.decode(SSLSocketImpl.java:1508)
at java.base/sun.security.ssl.SSLSocketImpl.readHandshakeRecord(SSLSocketImpl.java:1415)
at java.base/sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:450)
at java.base/sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:421)
at java.base/sun.net.www.protocol.https.HttpsClient.afterConnect(HttpsClient.java:580)
at java.base/sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:183)
at java.base/sun.net.www.protocol.http.HttpURLConnection.followRedirect0(HttpURLConnection.java:2887)
at java.base/sun.net.www.protocol.http.HttpURLConnection.followRedirect(HttpURLConnection.java:2796)
at java.base/sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1927)
at java.base/sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1589)
at java.base/sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:224)
at hudson.model.DownloadService.loadJSON(DownloadService.java:122)
at hudson.model.UpdateSite.updateDirectlyNow(UpdateSite.java:240)
at hudson.model.UpdateSite.updateDirectlyNow(UpdateSite.java:235)
at hudson.PluginManager.checkUpdatesServer(PluginManager.java:2177)
at hudson.util.Retrier.start(Retrier.java:62)
at hudson.PluginManager.doCheckUpdatesServer(PluginManager.java:2148)
at jenkins.DailyCheck.execute(DailyCheck.java:93)
at hudson.model.AsyncPeriodicWork.lambda$doRun$0(AsyncPeriodicWork.java:110)
at java.base/java.lang.Thread.run(Thread.java:833)
2025-10-29 16:56:23.237+0000 [id=47] INFO hudson.util.Retrier#start: Calling the listener of the allowed exception ‘Remote host terminated the handshake’ at the attempt #1 to do the action check updates server
2025-10-29 16:56:23.237+0000 [id=47] INFO hudson.util.Retrier#start: Attempted the action check updates server for 1 time(s) with no success
2025-10-29 16:56:23.237+0000 [id=47] SEVERE hudson.PluginManager#doCheckUpdatesServer: Error checking update sites for 1 attempt(s). Last exception was: SSLHandshakeException: Remote host terminated the handshake
2025-10-29 16:56:23.253+0000 [id=31] WARNING hudson.model.UpdateCenter#updateDefaultSite: Upgrading Jenkins. Failed to update the default Update Site ‘default’. Plugin upgrades may fail.
java.io.EOFException: SSL peer shut down incorrectly
at java.base/sun.security.ssl.SSLSocketInputRecord.read(SSLSocketInputRecord.java:483)
at java.base/sun.security.ssl.SSLSocketInputRecord.readHeader(SSLSocketInputRecord.java:472)
at java.base/sun.security.ssl.SSLSocketInputRecord.decode(SSLSocketInputRecord.java:160)
at java.base/sun.security.ssl.SSLTransport.decode(SSLTransport.java:111)
at java.base/sun.security.ssl.SSLSocketImpl.decode(SSLSocketImpl.java:1500)
Caused: javax.net.ssl.SSLHandshakeException: Remote host terminated the handshake
at java.base/sun.security.ssl.SSLSocketImpl.handleEOF(SSLSocketImpl.java:1709)
at java.base/sun.security.ssl.SSLSocketImpl.decode(SSLSocketImpl.java:1508)
at java.base/sun.security.ssl.SSLSocketImpl.readHandshakeRecord(SSLSocketImpl.java:1415)
at java.base/sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:450)
at java.base/sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:421)
at java.base/sun.net.www.protocol.https.HttpsClient.afterConnect(HttpsClient.java:580)
at java.base/sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:183)
at java.base/sun.net.www.protocol.http.HttpURLConnection.followRedirect0(HttpURLConnection.java:2887)
at java.base/sun.net.www.protocol.http.HttpURLConnection.followRedirect(HttpURLConnection.java:2796)
at java.base/sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1927)
at java.base/sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1589)
at java.base/sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:224)
at hudson.model.DownloadService.loadJSON(DownloadService.java:122)
at hudson.model.UpdateSite.updateDirectlyNow(UpdateSite.java:240)
at hudson.model.UpdateSite.updateDirectlyNow(UpdateSite.java:235)
at hudson.model.UpdateCenter.updateDefaultSite(UpdateCenter.java:2906)
at jenkins.install.SetupWizard.init(SetupWizard.java:208)
at jenkins.install.InstallState$InitialSecuritySetup.initializeState(InstallState.java:182)
at jenkins.model.Jenkins.setInstallState(Jenkins.java:1124)
at jenkins.install.InstallUtil.proceedToNextStateFrom(InstallUtil.java:98)
at jenkins.install.InstallState$Unknown.initializeState(InstallState.java:87)
at jenkins.model.Jenkins$16.run(Jenkins.java:3570)
at org.jvnet.hudson.reactor.TaskGraphBuilder$TaskImpl.run(TaskGraphBuilder.java:175)
at org.jvnet.hudson.reactor.Reactor.runTask(Reactor.java:304)
at jenkins.model.Jenkins$5.runTask(Jenkins.java:1151)
at org.jvnet.hudson.reactor.Reactor$2.run(Reactor.java:221)
at org.jvnet.hudson.reactor.Reactor$Node.run(Reactor.java:120)
at jenkins.security.ImpersonatingExecutorService$1.run(ImpersonatingExecutorService.java:68)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
at java.base/java.lang.Thread.run(Thread.java:833)
2025-10-29 16:56:23.253+0000 [id=31] INFO jenkins.InitReactorRunner$1#onAttained: Completed initialization
2025-10-29 16:56:23.284+0000 [id=23] INFO hudson.lifecycle.Lifecycle#onReady: Jenkins is fully up and running

Click here to view my old message

Looks like the same thing as in Windows Based Jenkins just started having certificate problems while attempting to run updates .

Sounds like a consequence of enforcing TLS 1.2: can you report the same things as I put in Windows Based Jenkins just started having certificate problems while attempting to run updates - #2 by dduportal please?

[edit] Nevermind: the errors you have here is different than the linked post

The error Caused: javax.net.ssl.SSLHandshakeException: Remote host terminated the handshake means that “something” between your JVM and the remote server did block the TCP connection => it’s most probably the Azure firewall.
I can reproduce by adding an Azure firewall as well.

I guess you might be missing some of the IPs/domains in your allow list. Please check Firewall preventing plugins from being updated, need more info on what traffic to allow - #4 by dduportal to learn more about the list of IPs used by the Jenkins infra and how to get them.