opensslを使用してパスワードを暗号化する
運用スクリプトを作成するにあたり、ログインパスワードをスクリプトに直書きするのは、
よろしくないのでは?
ということでopensslコマンドを使用してパスワードは別ファイル、しかも暗号化されたものを使用するやり方を記載します。
作業の流れ
- 秘密鍵の作成
- 公開鍵の作成
- パスワード暗号化
- パスワード複合化
- ログイン確認
今回ログインするのはMySQLとする。
1. 秘密鍵の作成
以下コマンドで作成します。
naoki@:~$ openssl genrsa 2024 > secret_key
Generating RSA private key, 2024 bit long modulus
........................+++
..............+++
e is 65537 (0x10001)
2. 公開鍵の作成
先ほど作成した秘密鍵を使用して公開鍵を
以下コマンドで作成します。
naoki@:~$ openssl rsa -pubout < secret_key > pub_key
writing RSA key
3. パスワード暗号化
作成した公開鍵を使用して暗号化されたパスワードファイルを作成します
naoki@:~$ echo "password" | openssl rsautl -encrypt -pubin -inkey pub_key > mysqlpwd
ここでcat mysqlpwd
でファイルを読み取ることができなければ問題ないです。
文字化けする感じで表示されるはずです。
4. パスワード複合化
以下複合化します
naoki@:~$ openssl rsautl -decrypt -inkey secret_key -in mysqlpwd
password
ここで先ほどechoで入力したパスワードが表示されていれば、複合化成功です
5. ログイン確認
先ほどのパスワード複合化手順を使用MySQL内のデータベース一覧を取得します。
naoki@:~$ MYSQLPASS=`openssl rsautl -decrypt -inkey secret_key -in mysqlpwd`
naoki@:~$ echo $MYSQLPASS
naoki@:~$ mysql -u root -p$MYSQLPASS
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 13
Server version: 8.0.23 Homebrew
Copyright (c) 2000, 2021, Oracle and/or its affiliates.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
今回の暗号複合化の方式について
こちらは公開鍵暗号化方式を使用してます
公開鍵とは
公開鍵暗号化方式で使用する鍵の1つで、鍵をかけるための鍵です。
この鍵でファイルの暗号化することができます。
公開鍵は、秘密鍵と対になるものため、作成する場合は秘密鍵を使用して作成します。
秘密鍵とは
公開鍵暗号化方式で使用する鍵の1つで、鍵を開けるための鍵です。
この鍵で暗号化されたファイルを複合することができます。
今回は、パスワードを公開鍵を使用して鍵をかけ(暗号化)、
秘密鍵を使用して鍵を開ける(複合化)する内容となることがMySQLログインパスワードを暗号化する作業で学習することができました。
このように実際にやってみることでインプット学習していたものが、
より身につきやすくなることが分かりました。
以上です。