CentOS7にOpenSSLをソースコードからインストールしてみた。

CentOS7にOpenSSLをソースコードからインストールしてみました。インストールしたOpenSSLのバージョンは 3.0.15 です。作業はrootユーザーで行いました。

まずはソースを格納するディレクトリに移動します。

# cd /usr/local/src

OpenSSLのソースコードをダウンロードします。3.0.15 のところは任意のバージョンになおしてください。

# wget https://www.openssl.org/source/openssl-3.0.15.tar.gz

ダウンロードしたファイルのチェックサムを確認しておきます。オリジナルのソースファイルのチェックサムはOpenSSLのサイトで確認ができます。

# sha256sum openssl-3.0.15.tar.gz

ダウンロードしたファイルを展開します。

# tar zxvf openssl-3.0.15.tar.gz

展開後に新しく作られたディレクトリに移動します。

# cd openssl-3.0.15

config を実行します。OpenSSL3.0以降は Configure になっているようです。

# ./Configure

ただここで以下のようなエラーが出てしまいました。。


# ./Configure
Can't locate IPC/Cmd.pm in @INC (@INC contains: /usr/local/src/openssl-3.0.15/util/perl /usr/local/lib64/perl5 /usr/local/share/perl5 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5 . /usr/local/src/openssl-3.0.15/external/perl/Text-Template-1.56/lib) at /usr/local/src/openssl-3.0.15/util/perl/OpenSSL/config.pm line 19.
BEGIN failed--compilation aborted at /usr/local/src/openssl-3.0.15/util/perl/OpenSSL/config.pm line 19.
Compilation failed in require at ./Configure line 23.
BEGIN failed--compilation aborted at ./Configure line 23.

どうやら perl-IPC-Cmd というパッケージが足りていないようです。ですので、このパッケージをインストールします。

# yum install perl-IPC-Cmd

インストール後に再度 Configure を実行してみたところ、うまくいきました。


# ./Configure
Configuring OpenSSL version 3.0.15 for target linux-x86_64
Using os-specific seed configuration
Created configdata.pm
Running configdata.pm
Created Makefile.in
Created Makefile
Created include/openssl/configuration.h

**********************************************************************
***
***   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.md file first)
***
**********************************************************************

続けて make を実行します。

# make

しばし時間がかかります。画面のログも出続けます。終わったときに成功したのかわかりづらいですが、echo $? をすると 0 となっていたので大丈夫なのでしょう。


# make
 :
かなりのログが出る
 :
/usr/bin/perl "-I." -Mconfigdata "util/dofile.pl" \
    "-oMakefile" util/wrap.pl.in > "util/wrap.pl"
chmod a+x util/wrap.pl
make[1]: Leaving directory `/usr/local/src/openssl-3.0.15'
# echo $?
0

最後に make install します。

# make install

こちらもしばし時間がかかります。make install も成功なのかわかりづらいため echo $? をしてみると 0 になっているので大丈夫なのでしょう。


# make install
 :
かなりのログが出る
 :
install doc/html/man7/proxy-certificates.html -> /usr/local/share/doc/openssl/html/man7/proxy-certificates.html
install doc/html/man7/ssl.html -> /usr/local/share/doc/openssl/html/man7/ssl.html
install doc/html/man7/x509.html -> /usr/local/share/doc/openssl/html/man7/x509.html
# echo $?
0

OpenSSLのインストール先を確認します。

# which openssl
/usr/local/bin/openssl

ライブラリの状態を見てみます。

# ldd /usr/local/bin/openssl


# ldd /usr/local/bin/openssl
	linux-vdso.so.1 =>  (0x00007ffeb3985000)
	libssl.so.3 => not found
	libcrypto.so.3 => not found
	libdl.so.2 => /lib64/libdl.so.2 (0x00007f95750cf000)
	libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f9574eb3000)
	libc.so.6 => /lib64/libc.so.6 (0x00007f9574ae4000)
	/lib64/ld-linux-x86-64.so.2 (0x000055cc48d72000)

not found となっている libssl.so.3 と libcrypto.so.3 の場所を確認します。

# find /usr/local/ -name libssl.so.3
# find /usr/local/ -name libcrypto.so.3


# find /usr/local/ -name libssl.so.3
/usr/local/lib64/libssl.so.3
/usr/local/src/openssl-3.0.15/libssl.so.3

# find /usr/local/ -name libcrypto.so.3
/usr/local/lib64/libcrypto.so.3
/usr/local/src/openssl-3.0.15/libcrypto.so.3

/usr/local/lib64 配下にライブラリがあるようなので共有ライブラリのパスを追加します。/etc/ld.so.conf.d 配下に openssl-3.0.conf というファイルを作成して /usr/local/lib64 を書き込みます。

# cd /etc/ld.so.conf.d
# vi openssl-3.0.conf

記載した内容は1行です。


# cat openssl-3.0.conf
/usr/local/lib64

システムにライブラリのパス情報を読み込ませます。

# ldconfig

システムキャッシュの内容を確認してみます。

# ldconfig -p | grep /usr/local


# ldconfig -p | grep /usr/local
	libssl.so.3 (libc6,x86-64) => /usr/local/lib64/libssl.so.3
	libssl.so (libc6,x86-64) => /usr/local/lib64/libssl.so
	libcrypto.so.3 (libc6,x86-64) => /usr/local/lib64/libcrypto.so.3
	libcrypto.so (libc6,x86-64) => /usr/local/lib64/libcrypto.so

/usr/local/lib64 配下のライブラリが読み込まれているようです。

OpenSSLのバージョンを確認してみます。

# openssl version


# openssl version
OpenSSL 3.0.15 3 Sep 2024 (Library: OpenSSL 3.0.15 3 Sep 2024)

これでインストールが完了です。

AWSにLightsailだけを扱うIAMユーザーを作成してみた。

AWSにLightsailだけを扱うIAMユーザーを作成してみました。IAMは Identity and Access Management の略だそうです。IAMユーザーを作成するにあたって以下の手順で実施しました。

  1. ポリシーを作成する。
  2. グループを作成して、ポリシーをグループにアタッチする。
  3. ユーザーを作成して、グループにユーザーを追加する。

まずはLightsailだけを扱うポリシーを作成します。IAMコンソールのダッシュボードからポリシーを選択します。

ポリシーの画面になるので右上の「ポリシーの作成」を押下します。

ポリシーを設定する画面になります。ポリシーエディタを使用するためJSONを選択します。

ポリシーエディタには手入力で以下を記載します。


{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "lightsail:*"
            ],
            "Resource": "*"
        }
    ]
}

Action に「サービス:APIアクション名」という形式で記載をします。アスタリスクはワイルドカード(任意)という意味で使うようです。Effect は Allow(許可)か Deny(拒否)となります。Resource は対象のリソースとのことです。

Version ですが、日付を変えてみたらエラーになりました。どうもこの日付には意味があるようです。

ポリシーエディタに記載ができたら右下の「次へ」を押下します。ポリシーの設定画面になるので、ポリシー名と説明を入力します。

ポリシー名は LightsailFullAccessPolicy としました。説明には日本語の入力はできないようです。英語での入力です。

このポリシーで定義されている許可 のところにLightsailがフルアクセスで表示されていることを確認します。右下にある「ポリシーの作成」を押下します。

ポリシーが作成されます。

次にグループを作成します。IAMコンソールのダッシュボードからユーザーグループを選択して右上の「グループを作成」を押下します。

ユーザーグループを作成 の画面になります。ユーザーグループ名は LightsailFullAccessGroup としました。

許可ポリシーを添付 のところで先ほど作成したポリシーにチェックを入れます。「ユーザーグループを作成」を押下します。

ユーザーグループが作成されます。

最後にユーザーを作成します。IAMコンソールのダッシュボードからユーザーを選択して右上の「ユーザーの作成」を押下します。

ユーザーの詳細を指定 の画面になるのでユーザー名を入力します。Lightsailの管理コンソールを使いたかったため AWSマネジメントコンソールへのユーザーアクセスを提供する にチェックを入れます。

ユーザータイプは Identity Center を使うほうが推奨らしいのですが使い方がよくわからないので、IAMユーザーのほうを選びました。IAMユーザーの方を選ぶとパスワードを指定する必要があり、その入力をします。

右下の「次へ」を押下します。許可を設定 の画面になります。ユーザーをグループに追加 を選択します。ユーザーに直接ポリシーをアタッチすることもできますが、今回はグループにポリシーをアタッチして、そのグループにユーザーを追加の手順となっています。

ユーザーグループ のところで先ほど作成したグループにチェックを入れます。「次へ」を押下します。

確認して作成 の画面になりますので表示項目の確認をします。


「ユーザーの作成」を押下すると、ユーザーが作成されます。

下部にある csvファイルをダウンロード をしておくと、ユーザー名、パスワード、コンソールサインインURLの記載されたテキストファイルがダウンロードできます。

IAMコンソールのダッシュボードに戻ってIAMリソースを見てみると、ユーザーグループ、ユーザー、ポリシーが作成されている(1になっている)のが確認できます。

IAMユーザー用のURLから管理コンソールにサインインしてみます。アカウントID、ユーザー名、パスワードを入力します。

サインインを押下すると、AWSの管理コンソールにサインインができました。Lightsailの権限しか付与していないためコストの使用状況などは見られないようです。