在WebSphere這套產品中,我們也能透過console去調整ssl的設定,
左側選單 > Security > SSL certificate and key management
進入頁面後,點擊右側 SSL configurations
進入可看到 NodeDefaultSSLSettings,再次點擊進入
可看到右側的 Quality of protection (QoP) settings
點擊進入後,頁面如下
目前預設Protocol是SSL_TLSv2,代表目前入埠/出埠使用的protocol有TLS v1.0、v1.1、v1.2 ,
下拉選單可看到許多選項,對應的portocol,可參考IBM官方文件:
https://www.ibm.com/docs/en/sdk-java-technology/8?topic=suites-protocols
其中還有支援最新的TLSv1.3 protocol。
現在先執行以下指令,測試看看現在我們的server1(port 9443),目前最高支援哪種portocol
docker exec test-was8.5.5.20 openssl s_client -connect localhost:9443
可以看到目前支援到TLSv1.2
接下來,我將portocol改為TLSv1.3,並且只保留一個cipher
按下ok後save儲存
SSL的設定預設是會即時生效的,因此按下save後,再重新下指令
docker exec test-was8.5.5.20 openssl s_client -connect localhost:9443
可以看到確實變成TLSv1.3 以及我唯一保留的cipher:TLS_AES_256_GCM_SHA384
另外,也由於我更改了protocol以及cipher的關係,
除了外部連進來(作為Server角色),裡面連出去(作為Client角色)也受到了影響。
我在測試程式裡連線到www.google.com 的部分也發生了javax.net.ssl.SSLHandshakeException
本來以為是因為只能使用TLSv1.3 以及 TLS_AES_256_GCM_SHA384,
而www.google.com 不支援 TLSv1.3 以及 TLS_AES_256_GCM_SHA384的關係,
但是從ssllab的檢測結果看
https://www.ssllabs.com/ssltest/analyze.html?d=www.google.com&s=2607%3af8b0%3a4007%3a809%3a0%3a0%3a0%3a2004&hideResults=on&ignoreMismatch=on&latest
卻又能看到TLSv1.3 以及 TLS_AES_256_GCM_SHA384,
那麼到底為什麼會SSLHandshakeException呢
明天再繼續看