1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27 package org.microemu;
28
29 import java.io.IOException;
30 import java.io.InputStream;
31 import java.security.KeyStore;
32 import java.security.SecureRandom;
33
34 import javax.net.ssl.HttpsURLConnection;
35 import javax.net.ssl.SSLContext;
36 import javax.net.ssl.TrustManager;
37 import javax.net.ssl.TrustManagerFactory;
38
39
40
41
42
43
44
45 public class SSLContextSetup {
46
47 private static boolean initialized = false;
48
49 public static synchronized void setUp() {
50 if (initialized) {
51 return;
52 }
53 InputStream is = null;
54 try {
55 KeyStore trustStore = KeyStore.getInstance("JKS");
56 is = SSLContextSetup.class.getResourceAsStream("/test-servers.keystore");
57 if (is == null) {
58 new Error("keystore not found");
59 }
60 trustStore.load(is, "microemu2006".toCharArray());
61 TrustManagerFactory trustManagerFactory = TrustManagerFactory.getInstance("SunX509");
62 trustManagerFactory.init(trustStore);
63 TrustManager[] trustManagers = trustManagerFactory.getTrustManagers();
64
65 SecureRandom secureRandom = SecureRandom.getInstance("SHA1PRNG");
66 SSLContext context = SSLContext.getInstance("TLS");
67 context.init(null, trustManagers, secureRandom);
68 HttpsURLConnection.setDefaultSSLSocketFactory(context.getSocketFactory());
69 initialized = true;
70 } catch (Throwable e) {
71 throw new Error(e);
72 } finally {
73 if (is != null) {
74 try {
75 is.close();
76 } catch (IOException ignore) {
77 }
78 }
79 }
80 }
81 }