Mercurial > hg > orthanc-imagej
changeset 14:698158e7b691
merge
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Fri, 15 Apr 2016 12:00:36 +0200 |
parents | ca2ee69520eb (current diff) 4c6bba5f44e7 (diff) |
children | 8842da72186a |
files | |
diffstat | 1 files changed, 84 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/com/orthancserver/HttpsTrustModifier.java Fri Apr 15 12:00:36 2016 +0200 @@ -0,0 +1,84 @@ +/** + * Orthanc - A Lightweight, RESTful DICOM Store + * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics + * Department, University Hospital of Liege, Belgium + * + * This program is free software: you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + **/ + + +package com.orthancserver; + +import java.net.*; +import javax.net.ssl.*; +import java.security.*; +import java.security.cert.*; + +public class HttpsTrustModifier +{ + private static final AlwaysTrustHostname trustHostname_ = new AlwaysTrustHostname(); + private static SSLSocketFactory trustSocket_; + + private static synchronized SSLSocketFactory GetAlwaysTrustSocket(HttpsURLConnection httpsConnection) + throws NoSuchAlgorithmException, KeyStoreException, KeyManagementException + { + // Singleton pattern to create one single trust manager + if (trustSocket_ == null) + { + SSLContext ctx = SSLContext.getInstance("TLS"); + ctx.init(null, new TrustManager[] { new AlwaysTrustManager() }, null); + trustSocket_ = ctx.getSocketFactory(); + } + + return trustSocket_; + } + + + private static final class AlwaysTrustHostname implements HostnameVerifier + { + public boolean verify(String hostname, SSLSession session) + { + return true; + } + } + + + private static class AlwaysTrustManager implements X509TrustManager + { + public void checkClientTrusted(X509Certificate[] arg0, String arg1) throws CertificateException + { + } + + public void checkServerTrusted(X509Certificate[] arg0, String arg1) throws CertificateException + { + } + + public X509Certificate[] getAcceptedIssuers() + { + return null; + } + } + + + public static void Trust(URLConnection conn) + throws KeyManagementException, NoSuchAlgorithmException, KeyStoreException + { + if (conn instanceof HttpsURLConnection) + { + HttpsURLConnection httpsConnection = (HttpsURLConnection) conn; + httpsConnection.setSSLSocketFactory(GetAlwaysTrustSocket(httpsConnection)); + httpsConnection.setHostnameVerifier(trustHostname_); + } + } +}