October 9, 2021

CentOS 7でOpenSSL LTS 1.1.1を使う

概要

CentOS 7では最新の7.9に上げてもOpenSSLは1.0.2k。
OpenSSL LTS版の1.1.1を使うためにビルドしてみた。

※ OpenSSL 1.1.1のrpmを作るならこちら
※ OpenSSL 1.1.1は2023/09/11にEoLを迎えたので、次のLTSである3.0.xをビルドするならこちら
※ OpenSSL 3.0.xのrpmを作るならこちら

用意したもの

vagrant up して yum update した CentOS 7.9

[vagrant@localhost ~]$ sudo yum update
読み込んだプラグイン:fastestmirror
Loading mirror speeds from cached hostfile
 * base: ftp.riken.jp
 * extras: ftp.riken.jp
 * updates: ftp.riken.jp
No packages marked for update
[vagrant@localhost ~]$ cat /etc/redhat-release
CentOS Linux release 7.9.2009 (Core)
[vagrant@localhost ~]$ openssl version
OpenSSL 1.0.2k-fips  26 Jan 2017

手順

必要なパッケージ追加

[vagrant@localhost ~]$ sudo yum install perl perl-Test-Simple perl-Test-Harness gcc

ビルド

  1. ダウンロード
    公式サイトからOpenSSL 1.1.1のtgzをダウンロードする。
    今回使ったのは1.1.1l
    [vagrant@localhost ~]$ curl -OL https://www.openssl.org/source/openssl-1.1.1l.tar.gz
    
  2. 展開
    [vagrant@localhost ~]$ tar xzf openssl-1.1.1l.tar.gz
    
  3. ディレクトリ移動してビルド
    [vagrant@localhost ~]$ cd openssl-1.1.1l/
    [vagrant@localhost openssl-1.1.1l]$ ./config
    [vagrant@localhost openssl-1.1.1l]$ make
    
  4. ビルド成功したか確認
    [vagrant@localhost openssl-1.1.1l]$ make test
    

    Result: PASS が表示されたら正常
    Can't locate Test/Harness.pm と言われるならperl-Test-Harnessが入ってない。
    Tests=0 で何もテストが実行されない↓なら、perl-Test-Simpleが入ってない。

    Files=158, Tests=0,  2 wallclock secs ( 0.36 usr  0.28 sys +  0.84 cusr  0.72 csys =  2.20 CPU)
    Result: FAIL
    make[1]: *** [_tests] Error 1
    make[1]: Leaving directory `/home/vagrant/openssl-1.1.1l'
    make: *** [tests] Error 2
    
  5. インストール
    [vagrant@localhost openssl-1.1.1l]$ sudo make install
    

    ちなみにアンインストールは sudo make uninstall

  6. インストールしたパスを共有ライブラリとして追加
    そのままだとlibssl.so.1.1が見つからないので、
    [vagrant@localhost openssl-1.1.1l]$ sudo ldconfig -p | grep libssl.so.1.1
    [vagrant@localhost openssl-1.1.1l]$ ldd /usr/local/bin/openssl
        linux-vdso.so.1 =>  (0x00007ffc7d5f4000)
        libssl.so.1.1 => not found
        libcrypto.so.1.1 => not found
        libdl.so.2 => /lib64/libdl.so.2 (0x00007f1a19ce8000)
        libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f1a19acc000)
        libc.so.6 => /lib64/libc.so.6 (0x00007f1a196fe000)
        /lib64/ld-linux-x86-64.so.2 (0x00007f1a19eec000)
    

    追加

    [vagrant@localhost openssl-1.1.1l]$ sudo sh -c 'echo /usr/local/lib64 > /etc/ld.so.conf.d/local.conf'
    [vagrant@localhost openssl-1.1.1l]$ sudo ldconfig
    [vagrant@localhost openssl-1.1.1l]$ sudo ldconfig -p | grep libssl.so.1.1
            libssl.so.1.1 (libc6,x86-64) => /usr/local/lib64/libssl.so.1.1
    [vagrant@localhost openssl-1.1.1l]$ ldd /usr/local/bin/openssl
        linux-vdso.so.1 =>  (0x00007ffe7873c000)
        libssl.so.1.1 => /usr/local/lib64/libssl.so.1.1 (0x00007f9576947000)
        libcrypto.so.1.1 => /usr/local/lib64/libcrypto.so.1.1 (0x00007f957645c000)
        libdl.so.2 => /lib64/libdl.so.2 (0x00007f9576258000)
        libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f957603c000)
        libc.so.6 => /lib64/libc.so.6 (0x00007f9575c6e000)
        /lib64/ld-linux-x86-64.so.2 (0x00007f9576bda000)
    

確認

  1. バージョン確認
    [vagrant@localhost openssl-1.1.1l]$ /usr/local/bin/openssl version
    OpenSSL 1.1.1l  24 Aug 2021
    

    ※ こんな↓メッセージが出たら、ldconfigで追加し忘れてる。

    /usr/local/bin/openssl: error while loading shared libraries: libssl.so.1.1: cannot open shared object file: No such file or directory
    

© 2020 nissy-lab.com