22
22
import org .apache .mina .core .filterchain .IoFilterAdapter ;
23
23
import org .apache .mina .core .session .IoSession ;
24
24
import org .junit .Test ;
25
+ import org .junit .runner .RunWith ;
26
+ import org .junit .runners .Parameterized ;
27
+ import org .junit .runners .Parameterized .Parameters ;
25
28
import org .slf4j .Logger ;
26
29
import org .slf4j .LoggerFactory ;
27
30
import quickfix .Acceptor ;
51
54
import java .security .Principal ;
52
55
import java .security .cert .Certificate ;
53
56
import java .security .cert .X509Certificate ;
57
+ import java .util .Arrays ;
54
58
import java .util .HashMap ;
55
59
import java .util .List ;
56
60
import java .util .Properties ;
66
70
import static org .junit .Assert .assertSame ;
67
71
import static org .junit .Assert .assertTrue ;
68
72
73
+ @ RunWith (Parameterized .class )
69
74
public class SSLCertificateTest {
70
75
76
+ @ Parameters
77
+ public static List <Object []> parameters () {
78
+ return Arrays .asList (new String [][] {{"TLS_RSA_WITH_AES_128_CBC_SHA" , "TLSv1.2" }, {"TLS_AES_256_GCM_SHA384" , "TLSv1.3" }});
79
+ }
80
+
71
81
// Note: To diagnose cipher suite errors, run with -Djavax.net.debug=ssl:handshake
72
- private static final String CIPHER_SUITES_TLS = "TLS_AES_256_GCM_SHA384" ;
82
+ private final String enabledCipherSuites ;
83
+ private final String enabledProtocols ;
84
+
85
+ public SSLCertificateTest (String enabledCipherSuites , String enabledProtocols ) {
86
+ this .enabledCipherSuites = enabledCipherSuites ;
87
+ this .enabledProtocols = enabledProtocols ;
88
+ }
73
89
74
90
@ After
75
91
public void cleanup () {
@@ -85,14 +101,14 @@ public void cleanup() {
85
101
public void shouldAuthenticateServerCertificate () throws Exception {
86
102
int freePort = AvailablePortFinder .getNextAvailable ();
87
103
TestAcceptor acceptor = new TestAcceptor (createAcceptorSettings ("single-session/server.keystore" , false ,
88
- "single-session/empty.keystore" , CIPHER_SUITES_TLS , "TLSv1.3" , "JKS" , "JKS" , freePort ));
104
+ "single-session/empty.keystore" , enabledCipherSuites , enabledProtocols , "JKS" , "JKS" , freePort ));
89
105
90
106
try {
91
107
acceptor .start ();
92
108
93
109
TestInitiator initiator = new TestInitiator (
94
110
createInitiatorSettings ("single-session/empty.keystore" , "single-session/client.truststore" ,
95
- CIPHER_SUITES_TLS , "TLSv1.3" , "ZULU" , "ALFA" , Integer .toString (freePort ), "JKS" , "JKS" ));
111
+ enabledCipherSuites , enabledProtocols , "ZULU" , "ALFA" , Integer .toString (freePort ), "JKS" , "JKS" ));
96
112
97
113
try {
98
114
initiator .start ();
@@ -137,13 +153,13 @@ public void shouldAuthenticateServerCertificateViaSocksProxy(String proxyVersion
137
153
try {
138
154
int port = AvailablePortFinder .getNextAvailable ();
139
155
TestAcceptor acceptor = new TestAcceptor (createAcceptorSettings ("single-session/server.keystore" , false ,
140
- "single-session/empty.keystore" , CIPHER_SUITES_TLS , "TLSv1.3" , "JKS" , "JKS" , port ));
156
+ "single-session/empty.keystore" , enabledCipherSuites , enabledProtocols , "JKS" , "JKS" , port ));
141
157
142
158
try {
143
159
acceptor .start ();
144
160
145
161
SessionSettings initiatorSettings = createInitiatorSettings ("single-session/empty.keystore" , "single-session/client.truststore" ,
146
- CIPHER_SUITES_TLS , "TLSv1.3" , "ZULU" , "ALFA" , Integer .toString (port ), "JKS" , "JKS" );
162
+ enabledCipherSuites , enabledProtocols , "ZULU" , "ALFA" , Integer .toString (port ), "JKS" , "JKS" );
147
163
148
164
Properties defaults = initiatorSettings .getDefaultProperties ();
149
165
@@ -184,14 +200,14 @@ public void shouldAuthenticateServerCertificateViaSocksProxy(String proxyVersion
184
200
public void shouldAuthenticateServerNameUsingServerCommonName () throws Exception {
185
201
int freePort = AvailablePortFinder .getNextAvailable ();
186
202
TestAcceptor acceptor = new TestAcceptor (createAcceptorSettings ("single-session/server-cn.keystore" , false ,
187
- "single-session/empty.keystore" , CIPHER_SUITES_TLS , "TLSv1.3" , "JKS" , "JKS" , freePort ));
203
+ "single-session/empty.keystore" , enabledCipherSuites , enabledProtocols , "JKS" , "JKS" , freePort ));
188
204
189
205
try {
190
206
acceptor .start ();
191
207
192
208
TestInitiator initiator = new TestInitiator (
193
209
createInitiatorSettings ("single-session/empty.keystore" , "single-session/client-cn.truststore" ,
194
- CIPHER_SUITES_TLS , "TLSv1.3" , "ZULU" , "ALFA" , Integer .toString (freePort ), "JKS" , "JKS" , "HTTPS" ));
210
+ enabledCipherSuites , enabledProtocols , "ZULU" , "ALFA" , Integer .toString (freePort ), "JKS" , "JKS" , "HTTPS" ));
195
211
196
212
try {
197
213
initiator .start ();
@@ -219,14 +235,14 @@ public void shouldAuthenticateServerNameUsingServerCommonName() throws Exception
219
235
public void shouldAuthenticateServerNameUsingSNIExtension () throws Exception {
220
236
int freePort = AvailablePortFinder .getNextAvailable ();
221
237
TestAcceptor acceptor = new TestAcceptor (createAcceptorSettings ("single-session/server-sni.keystore" , false ,
222
- "single-session/empty.keystore" , CIPHER_SUITES_TLS , "TLSv1.3" , "JKS" , "JKS" , freePort ));
238
+ "single-session/empty.keystore" , enabledCipherSuites , enabledProtocols , "JKS" , "JKS" , freePort ));
223
239
224
240
try {
225
241
acceptor .start ();
226
242
227
243
TestInitiator initiator = new TestInitiator (
228
244
createInitiatorSettings ("single-session/empty.keystore" , "single-session/client-sni.truststore" ,
229
- CIPHER_SUITES_TLS , "TLSv1.3" , "ZULU" , "ALFA" , Integer .toString (freePort ), "JKS" , "JKS" , "HTTPS" ));
245
+ enabledCipherSuites , enabledProtocols , "ZULU" , "ALFA" , Integer .toString (freePort ), "JKS" , "JKS" , "HTTPS" ));
230
246
231
247
try {
232
248
initiator .start ();
@@ -255,14 +271,14 @@ public void shouldFailWhenHostnameDoesNotMatchServerName() throws Exception {
255
271
int freePort = AvailablePortFinder .getNextAvailable ();
256
272
257
273
TestAcceptor acceptor = new TestAcceptor (createAcceptorSettings ("single-session/server-bad-cn.keystore" , false ,
258
- "single-session/empty.keystore" , CIPHER_SUITES_TLS , "TLSv1.3" , "JKS" , "JKS" , freePort ));
274
+ "single-session/empty.keystore" , enabledCipherSuites , enabledProtocols , "JKS" , "JKS" , freePort ));
259
275
260
276
try {
261
277
acceptor .start ();
262
278
263
279
TestInitiator initiator = new TestInitiator (
264
280
createInitiatorSettings ("single-session/empty.keystore" , "single-session/client-bad-cn.truststore" ,
265
- CIPHER_SUITES_TLS , "TLSv1.3" , "ZULU" , "ALFA" , Integer .toString (freePort ), "JKS" , "JKS" , "HTTPS" ));
281
+ enabledCipherSuites , enabledProtocols , "ZULU" , "ALFA" , Integer .toString (freePort ), "JKS" , "JKS" , "HTTPS" ));
266
282
267
283
try {
268
284
initiator .start ();
@@ -286,14 +302,14 @@ public void shouldFailWhenHostnameDoesNotMatchServerName() throws Exception {
286
302
public void shouldAuthenticateServerAndClientCertificates () throws Exception {
287
303
int freePort = AvailablePortFinder .getNextAvailable ();
288
304
TestAcceptor acceptor = new TestAcceptor (createAcceptorSettings ("single-session/server.keystore" , true ,
289
- "single-session/server.truststore" , CIPHER_SUITES_TLS , "TLSv1.3" , "JKS" , "JKS" , freePort ));
305
+ "single-session/server.truststore" , enabledCipherSuites , enabledProtocols , "JKS" , "JKS" , freePort ));
290
306
291
307
try {
292
308
acceptor .start ();
293
309
294
310
TestInitiator initiator = new TestInitiator (
295
311
createInitiatorSettings ("single-session/client.keystore" , "single-session/client.truststore" ,
296
- CIPHER_SUITES_TLS , "TLSv1.3" , "ZULU" , "ALFA" , Integer .toString (freePort ), "JKS" , "JKS" ));
312
+ enabledCipherSuites , enabledProtocols , "ZULU" , "ALFA" , Integer .toString (freePort ), "JKS" , "JKS" ));
297
313
298
314
try {
299
315
initiator .start ();
@@ -319,14 +335,14 @@ public void shouldAuthenticateServerAndClientCertificates() throws Exception {
319
335
public void shouldAuthenticateServerAndClientCertificatesWhenUsingDifferentKeystoreFormats () throws Exception {
320
336
int freePort = AvailablePortFinder .getNextAvailable ();
321
337
TestAcceptor acceptor = new TestAcceptor (createAcceptorSettings ("single-session/server-pkcs12.keystore" , true ,
322
- "single-session/server-jceks.truststore" , CIPHER_SUITES_TLS , "TLSv1.3" , "PKCS12" ,
338
+ "single-session/server-jceks.truststore" , enabledCipherSuites , enabledProtocols , "PKCS12" ,
323
339
"JCEKS" , freePort ));
324
340
325
341
try {
326
342
acceptor .start ();
327
343
328
344
TestInitiator initiator = new TestInitiator (createInitiatorSettings ("single-session/client-jceks.keystore" ,
329
- "single-session/client-jceks.keystore" , CIPHER_SUITES_TLS , "TLSv1.3" , "ZULU" , "ALFA" ,
345
+ "single-session/client-jceks.keystore" , enabledCipherSuites , enabledProtocols , "ZULU" , "ALFA" ,
330
346
Integer .toString (freePort ), "JCEKS" , "JCEKS" ));
331
347
332
348
try {
@@ -354,20 +370,20 @@ public void shouldAuthenticateServerAndClientCertificatesForIndividualSessions()
354
370
TestAcceptor acceptor = new TestAcceptor (createMultiSessionAcceptorSettings (
355
371
"multi-session/server.keystore" , true , new String [] { "multi-session/server1.truststore" ,
356
372
"multi-session/server2.truststore" , "multi-session/server3.truststore" },
357
- CIPHER_SUITES_TLS , "TLSv1.3" ));
373
+ enabledCipherSuites , enabledProtocols ));
358
374
359
375
try {
360
376
acceptor .start ();
361
377
362
378
TestInitiator initiator1 = new TestInitiator (
363
379
createInitiatorSettings ("multi-session/client1.keystore" , "multi-session/client1.keystore" ,
364
- CIPHER_SUITES_TLS , "TLSv1.3" , "ZULU0" , "ALFA0" , "12340" , "JKS" , "JKS" ));
380
+ enabledCipherSuites , enabledProtocols , "ZULU0" , "ALFA0" , "12340" , "JKS" , "JKS" ));
365
381
TestInitiator initiator2 = new TestInitiator (
366
382
createInitiatorSettings ("multi-session/client2.keystore" , "multi-session/client2.keystore" ,
367
- CIPHER_SUITES_TLS , "TLSv1.3" , "ZULU1" , "ALFA1" , "12341" , "JKS" , "JKS" ));
383
+ enabledCipherSuites , enabledProtocols , "ZULU1" , "ALFA1" , "12341" , "JKS" , "JKS" ));
368
384
TestInitiator initiator3 = new TestInitiator (
369
385
createInitiatorSettings ("multi-session/client3.keystore" , "multi-session/client3.keystore" ,
370
- CIPHER_SUITES_TLS , "TLSv1.3" , "ZULU2" , "ALFA2" , "12342" , "JKS" , "JKS" ));
386
+ enabledCipherSuites , enabledProtocols , "ZULU2" , "ALFA2" , "12342" , "JKS" , "JKS" ));
371
387
372
388
try {
373
389
initiator1 .start ();
@@ -415,20 +431,20 @@ public void shouldFailIndividualSessionsWhenInvalidCertificatesUsed() throws Exc
415
431
TestAcceptor acceptor = new TestAcceptor (createMultiSessionAcceptorSettings (
416
432
"multi-session/server.keystore" , true , new String [] { "multi-session/server1.truststore" ,
417
433
"multi-session/server2.truststore" , "multi-session/server3.truststore" },
418
- CIPHER_SUITES_TLS , "TLSv1.3" ));
434
+ enabledCipherSuites , enabledProtocols ));
419
435
420
436
try {
421
437
acceptor .start ();
422
438
423
439
TestInitiator initiator1 = new TestInitiator (
424
440
createInitiatorSettings ("multi-session/client2.keystore" , "multi-session/client2.keystore" ,
425
- CIPHER_SUITES_TLS , "TLSv1.3" , "ZULU0" , "ALFA0" , "12340" , "JKS" , "JKS" ));
441
+ enabledCipherSuites , enabledProtocols , "ZULU0" , "ALFA0" , "12340" , "JKS" , "JKS" ));
426
442
TestInitiator initiator2 = new TestInitiator (
427
443
createInitiatorSettings ("multi-session/client1.keystore" , "multi-session/client1.keystore" ,
428
- CIPHER_SUITES_TLS , "TLSv1.3" , "ZULU1" , "ALFA1" , "12341" , "JKS" , "JKS" ));
444
+ enabledCipherSuites , enabledProtocols , "ZULU1" , "ALFA1" , "12341" , "JKS" , "JKS" ));
429
445
TestInitiator initiator3 = new TestInitiator (
430
446
createInitiatorSettings ("multi-session/client3.keystore" , "multi-session/client3.keystore" ,
431
- CIPHER_SUITES_TLS , "TLSv1.3" , "ZULU2" , "ALFA2" , "12342" , "JKS" , "JKS" ));
447
+ enabledCipherSuites , enabledProtocols , "ZULU2" , "ALFA2" , "12342" , "JKS" , "JKS" ));
432
448
433
449
try {
434
450
initiator1 .start ();
@@ -500,14 +516,14 @@ public void shouldFailWhenUsingEmptyServerKeyStore() throws Exception {
500
516
public void shouldFailWhenUsingEmptyClientTruststore () throws Exception {
501
517
int freePort = AvailablePortFinder .getNextAvailable ();
502
518
TestAcceptor acceptor = new TestAcceptor (createAcceptorSettings ("single-session/server.keystore" , false ,
503
- "single-session/empty.keystore" , CIPHER_SUITES_TLS , "TLSv1.3" , "JKS" , "JKS" , freePort ));
519
+ "single-session/empty.keystore" , enabledCipherSuites , enabledProtocols , "JKS" , "JKS" , freePort ));
504
520
505
521
try {
506
522
acceptor .start ();
507
523
508
524
TestInitiator initiator = new TestInitiator (
509
525
createInitiatorSettings ("single-session/empty.keystore" , "single-session/empty.keystore" ,
510
- CIPHER_SUITES_TLS , "TLSv1.3" , "ZULU" , "ALFA" , Integer .toString (freePort ), "JKS" , "JKS" ));
526
+ enabledCipherSuites , enabledProtocols , "ZULU" , "ALFA" , Integer .toString (freePort ), "JKS" , "JKS" ));
511
527
512
528
try {
513
529
initiator .start ();
@@ -531,14 +547,14 @@ public void shouldFailWhenUsingEmptyClientTruststore() throws Exception {
531
547
public void shouldFailWhenUsingEmptyServerTrustore () throws Exception {
532
548
int freePort = AvailablePortFinder .getNextAvailable ();
533
549
TestAcceptor acceptor = new TestAcceptor (createAcceptorSettings ("single-session/server.keystore" , true ,
534
- "single-session/empty.keystore" , CIPHER_SUITES_TLS , "TLSv1.3" , "JKS" , "JKS" , freePort ));
550
+ "single-session/empty.keystore" , enabledCipherSuites , enabledProtocols , "JKS" , "JKS" , freePort ));
535
551
536
552
try {
537
553
acceptor .start ();
538
554
539
555
TestInitiator initiator = new TestInitiator (
540
556
createInitiatorSettings ("single-session/client.keystore" , "single-session/client.truststore" ,
541
- CIPHER_SUITES_TLS , "TLSv1.3" , "ZULU" , "ALFA" , Integer .toString (freePort ), "JKS" , "JKS" ));
557
+ enabledCipherSuites , enabledProtocols , "ZULU" , "ALFA" , Integer .toString (freePort ), "JKS" , "JKS" ));
542
558
543
559
try {
544
560
initiator .start ();
@@ -562,14 +578,14 @@ public void shouldFailWhenUsingEmptyServerTrustore() throws Exception {
562
578
public void shouldFailWhenUsingBadClientCertificate () throws Exception {
563
579
int freePort = AvailablePortFinder .getNextAvailable ();
564
580
TestAcceptor acceptor = new TestAcceptor (createAcceptorSettings ("single-session/server.keystore" , true ,
565
- "single-session/server.truststore" , CIPHER_SUITES_TLS , "TLSv1.3" , "JKS" , "JKS" , freePort ));
581
+ "single-session/server.truststore" , enabledCipherSuites , enabledProtocols , "JKS" , "JKS" , freePort ));
566
582
567
583
try {
568
584
acceptor .start ();
569
585
570
586
TestInitiator initiator = new TestInitiator (
571
587
createInitiatorSettings ("single-session/server.keystore" , "single-session/client.truststore" ,
572
- CIPHER_SUITES_TLS , "TLSv1.3" , "ZULU" , "ALFA" , Integer .toString (freePort ), "JKS" , "JKS" ));
588
+ enabledCipherSuites , enabledProtocols , "ZULU" , "ALFA" , Integer .toString (freePort ), "JKS" , "JKS" ));
573
589
574
590
try {
575
591
initiator .start ();
@@ -593,14 +609,14 @@ public void shouldFailWhenUsingBadClientCertificate() throws Exception {
593
609
public void shouldFailWhenUsingBadServerCertificate () throws Exception {
594
610
int freePort = AvailablePortFinder .getNextAvailable ();
595
611
TestAcceptor acceptor = new TestAcceptor (createAcceptorSettings ("single-session/client.keystore" , false ,
596
- "single-session/empty.keystore" , CIPHER_SUITES_TLS , "TLSv1.3" , "JKS" , "JKS" , freePort ));
612
+ "single-session/empty.keystore" , enabledCipherSuites , enabledProtocols , "JKS" , "JKS" , freePort ));
597
613
598
614
try {
599
615
acceptor .start ();
600
616
601
617
TestInitiator initiator = new TestInitiator (
602
618
createInitiatorSettings ("single-session/empty.keystore" , "single-session/client.truststore" ,
603
- CIPHER_SUITES_TLS , "TLSv1.3" , "ZULU" , "ALFA" , Integer .toString (freePort ), "JKS" , "JKS" ));
619
+ enabledCipherSuites , enabledProtocols , "ZULU" , "ALFA" , Integer .toString (freePort ), "JKS" , "JKS" ));
604
620
605
621
try {
606
622
initiator .start ();
@@ -631,7 +647,7 @@ public void shouldConnectDifferentTypesOfSessions() throws Exception {
631
647
632
648
TestInitiator sslInitiator = new TestInitiator (
633
649
createInitiatorSettings ("single-session/client.keystore" , "single-session/client.truststore" ,
634
- CIPHER_SUITES_TLS , "TLSv1.3" , "ZULU_SSL" , "ALFA_SSL" , Integer .toString (sslPort ), "JKS" , "JKS" ));
650
+ enabledCipherSuites , enabledProtocols , "ZULU_SSL" , "ALFA_SSL" , Integer .toString (sslPort ), "JKS" , "JKS" ));
635
651
636
652
TestInitiator nonSslInitiator = new TestInitiator (createInitiatorSettings ("ZULU_NON_SSL" , "ALFA_NON_SSL" , nonSslPort ));
637
653
0 commit comments