1
1
package org .kohsuke .github .extras ;
2
2
3
+ import com .squareup .okhttp .ConnectionSpec ;
3
4
import com .squareup .okhttp .OkHttpClient ;
4
5
import com .squareup .okhttp .OkUrlFactory ;
6
+
5
7
import org .kohsuke .github .HttpConnector ;
6
8
7
9
import java .io .IOException ;
10
+
8
11
import java .net .HttpURLConnection ;
9
12
import java .net .URL ;
10
13
14
+ import java .security .KeyManagementException ;
15
+ import java .security .NoSuchAlgorithmException ;
16
+
17
+ import java .util .Arrays ;
18
+ import java .util .List ;
19
+
20
+ import javax .net .ssl .SSLContext ;
21
+ import javax .net .ssl .SSLSocketFactory ;
22
+
11
23
/**
12
24
* {@link HttpConnector} for {@link OkHttpClient}.
13
25
*
@@ -23,10 +35,33 @@ public class OkHttpConnector implements HttpConnector {
23
35
private final OkUrlFactory urlFactory ;
24
36
25
37
public OkHttpConnector (OkUrlFactory urlFactory ) {
38
+ urlFactory .client ().setSslSocketFactory (TlsSocketFactory ());
39
+ urlFactory .client ().setConnectionSpecs (TlsConnectionSpecs ());
26
40
this .urlFactory = urlFactory ;
27
41
}
28
42
29
43
public HttpURLConnection connect (URL url ) throws IOException {
30
44
return urlFactory .open (url );
31
45
}
46
+
47
+ /** Returns TLSv1.2 only SSL Socket Factory. */
48
+ private SSLSocketFactory TlsSocketFactory () {
49
+ SSLContext sc ;
50
+ try {
51
+ sc = SSLContext .getInstance ("TLSv1.2" );
52
+ } catch (NoSuchAlgorithmException e ) {
53
+ throw new RuntimeException (e .getMessage (), e );
54
+ }
55
+ try {
56
+ sc .init (null , null , null );
57
+ return sc .getSocketFactory ();
58
+ } catch (KeyManagementException e ) {
59
+ throw new RuntimeException (e .getMessage (), e );
60
+ }
61
+ }
62
+
63
+ /** Returns connection spec with TLS v1.2 in it */
64
+ private List <ConnectionSpec > TlsConnectionSpecs () {
65
+ return Arrays .asList (ConnectionSpec .MODERN_TLS , ConnectionSpec .CLEARTEXT );
66
+ }
32
67
}
0 commit comments