curlエラー35：接続中の不明なSSLプロトコルエラー確認・対応方法

##テスト環境から外部連携落ちた
　アプリのテストから外部通信を落ちてた問題でした。ずっとcurl・opensslのエラーが出てました。Mac ターミナルから接続確認すると通常に連携できてました。Dockerコンテナ内で何かおかしいと感じました。


###curlエラー内容
LS handshakeのすぐ後に不明のsslエラーで落ちてました。
* SSLv3, TLS handshake, Client hello (1):

```
[root@xyzabc web]# curl -v -H GET 'https://google.com'
* About to connect() to google.com port 443
*   Trying 142.251.42.174... connected
* Connected to google.com (142.251.42.174) port 443
* successfully set certificate verify locations:
*   CAfile: /etc/pki/tls/certs/ca-bundle.crt
  CApath: none
* SSLv3, TLS handshake, Client hello (1):
Unknown SSL protocol error in connection to google.com:443
* Closing connection #0
curl: (35) Unknown SSL protocol error in connection to google.com:443
```
* google以外も他のサイトでも同じエラーで通信落ちてた。インタネットで色々調べたら、curlのバージョン古いなど色々記事出てました。

* 次openssl/curlのバージョンの問題とお思って、それを確認してました。
　以下のバージョンの問題も無かった、別システムで問題なく同じバージョンで全部スムーズに動いてた。

```
[root@てすと環境web]# curl -V
curl 7.15.5 (x86_64-redhat-linux-gnu) libcurl/7.15.5 OpenSSL/0.9.8b zlib/1.2.3 libidn/0.6.5
Protocols: tftp ftp telnet dict ldap http file https ftps
Features: GSS-Negotiate IDN IPv6 Largefile NTLM SSL libz
-- openssl version check
[root@てすと環境web]# rpm -qa | grep -i openssl
openssl-0.9.8e-40.el5_11
openssl-0.9.8e-40.el5_11
openssl-devel-0.9.8e-40.el5_11
openssl-devel-0.9.8e-40.el5_11

-- openssl version check
[root@てすと環境web]# rpm -qa | grep -i curl
curl-7.15.5-17.el5_9
curl-7.15.5-17.el5_9
curl-devel-7.15.5-17.el5_9
curl-devel-7.15.5-17.el5_9
```

* 次問題の切り分けとして、docker-image古いかもと考えて、調べてました
    * 全部のdocker imageを削除した。
    * 最新のimageをpullした
    * 再度curlを試す
        * 結果：また同じエラー出ました。Unknown SSL protocol error in connection to www.google.com:443
    * こちらを試してもエラーの詳細も同じ文言出てました。
        * curl -v -I -4 'https://google.com'

* docker image最新か確認して、pullか削除する
 * ターミナルでdocker imagesを実行する
 * docker rm imagesXX

```
REPOSITORY              TAG             IMAGE ID       CREATED         SIZE
abc/テスト１          　テスト_最新    っっっっっっx   　　　10 days ago      4.23GB
abc/テスト２           <none>        っっxxsfc2っっっx   　5 weeks ago     3.97GB
abc/テストサビース１      最新          xっっっっっっっx   　 4 months ago    1.09GB
サビース２１             最新          xっxxsfc2っっっっx   4 months ago    89.1MB
```
* パソコン再起動で解決されるかも知れません、一度やってみました。
    * 結果：まだ同じエラー出てた
* 最後にDocker Engineのバージョンを確認するしかなかった、
    * Docker desktop　->　Preferencesー>Docker Engineにクリックするとバージョン情報などを表示される　：v20.01.12

* 上記のdocker engineのバージョン最新にアップデート後、再度curlを試した
    * 結果：成功した。responseも返ってきた！

```
[root@てすと環境web]# curl -v -H GET 'https://google.com'
* About to connect() to google.com port 443
*   Trying 142.251.42.174... connected
* Connected to google.com (142.251.42.174) port 443
* successfully set certificate verify locations:
*   CAfile: /etc/pki/tls/certs/ca-bundle.crt
  CApath: none
* SSLv3, TLS handshake, Client hello (1):
SSLv3, TLS handshake, Server hello (2):
.......
SSLv3, TLS handshake, Finished (20):
<TITLE>301 Moved</TITLE></HEAD><BODY>
<H1>301 Moved</H1>
The document has moved
<A HREF="https://www.google.com/">here</A>.
</BODY></HTML>
* Connection #0 to host google.com left intact
* Closing connection #0
* SSLv3, TLS alert, Client hello (1):
[root@48da8a1f205a web]#
```


### 参考
・Curl Options
　https://curl.se/docs/manpage.html

・docker系
　https://docs.docker.jp/engine/reference/run.html#clean-up-rm
　https://docs.docker.com/engine/release-notes/#20100
　https://www.memotansu.jp/docker/692/
　https://docs.docker.com/engine/reference/commandline/image_rm/
　https://docs.docker.com/engine/reference/commandline/rmi/