CentOS8 OpenSSL1.1.1をインストールする

#0. 前提
CentOS8でPython3.9と一緒にインストールしたpipコマンドを実行するにあたり、OpenSSL1.0.2以上のインストールが必要とのことだったので、OpenSSL1.1.1を入れた。

#1. 依存関係のインストール
事前に以下インストールを実施すること。

コンパイルに必要

```
$ sudo yum install -y make gcc
```

opensslのビルドに必要

```
$ sudo yum install -y zlib-devel perl-core
```

#2.ソースコードを取得 
以下ページからソースコードを取得
https://www.openssl.org/source/
※今回はopenssl-1.1.1h.tar.gz

```
$ sudo curl https://www.openssl.org/source/openssl-1.1.1h.tar.gz -o /usr/local/src/openssl-1.1.1h.tar.gz
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 9580k  100 9580k    0     0  6751k      0  0:00:01  0:00:01 --:--:-- 6746k
```

#3.データの解凍

以下コマンドを実施しtar.gzファイルを解凍。

```
$ ls -ltr
合計 9584
-rw-r--r--. 1 root root 9810045 12月 5 11:15 openssl-1.1.1h.tar.gz
$ sudo tar xvzf openssl-1.1.1.tar.gz
```

#4.opensslをソースからビルドしてインストール
以下コマンドでopensslをソースからビルドしてインストール

```
$ sudo ./config --prefix=/usr/local/openssl-1.1.1h shared zlib
Operating system: x86_64-whatever-linux2
Configuring OpenSSL version 1.1.1h (0x1010108fL) for linux-x86_64
Using os-specific seed configuration
Creating configdata.pm
Creating Makefile

**********************************************************************
***                                                                ***
***   OpenSSL has been successfully configured                     ***
***                                                                ***
***   If you encounter a problem while building, please open an    ***
***   issue on GitHub <https://github.com/openssl/openssl/issues>  ***
***   and include the output from the following command:           ***
***                                                                ***
***       perl configdata.pm --dump                                ***
***                                                                ***
***   (If you are new to OpenSSL, you might want to consult the    ***
***   'Troubleshooting' section in the INSTALL file first)         ***
***                                                                ***
**********************************************************************
```

続けて以下実行。

```
$ sudo make depend
$ sudo make
$ sudo make test
$ sudo make install
```

#6.インストールされたことを確認

```
$ ls -l /usr/local/openssl-1.1.1h/
合計 0
drwxr-xr-x. 2 root root  37 12月 5 11:38 bin
drwxr-xr-x. 3 root root  21 12月 5 11:38 include
drwxr-xr-x. 4 root root 159 12月 5 11:38 lib
drwxr-xr-x. 4 root root  28 12月 5 11:40 share
drwxr-xr-x. 5 root root 140 12月 5 11:38 ssl
```

#7.OpenSSLを共有ライブラリを追加する
ld.so.confを確認。ld.so.conf.d配下のファイルがincludeされていることを確認。

```
$ sudo cat /etc/ld.so.conf
include ld.so.conf.d/*.conf
```

openssl-1.1.1h.confを作成。

```
$ cat /etc/ld.so.conf.d/openssl-1.1.1h.conf
/usr/local/openssl-1.1.1h/lib/
```

キャッシュファイルを更新。

```
$ ldconfig
$ ldconfig -p | grep libssl
        libssl3.so (libc6,x86-64) => /lib64/libssl3.so
        libssl.so.1.1 (libc6,x86-64) => /usr/local/openssl-1.1.1h/lib64/libssl.so.1.1
        libssl.so.1.1 (libc6,x86-64) => /lib64/libssl.so.1.1
        libssl.so (libc6,x86-64) => /usr/local/openssl-1.1.1h/lib64/libssl.so
```

以下コマンドで動作確認をする。TLSv1.3に対応していることがわかる。

```
$ /usr/local/openssl-1.1.1h/bin/openssl ciphers -v | grep TLSv1.3
TLS_AES_256_GCM_SHA384  TLSv1.3 Kx=any      Au=any  Enc=AESGCM(256) Mac=AEAD
TLS_CHACHA20_POLY1305_SHA256 TLSv1.3 Kx=any      Au=any  Enc=CHACHA20/POLY1305(256) Mac=AEAD
TLS_AES_128_GCM_SHA256  TLSv1.3 Kx=any      Au=any  Enc=AESGCM(128) Mac=AEAD
```

###Python に読み込ませたいとき
PythonにインストールしたOpensslを読み込ませる場合。
すでに実機にPython3.9がインストールされていたため、インストールに使ったファイルを削除

```
rm -rf /usr/local/python390
```

Pythonをインストール。

```
./configure --prefix=/usr/local/python390 --with-openssl=/usr/local/openssl-1.1.1h --with-ensurepip
```