opensslで暗号処理

バージョン確認
$ openssl version
OpenSSL 1.1.1f 31 Mar 2020

$ openssl enc
共通鍵暗号による暗号化と復号
ブロック暗号とストリーム暗号
ソルト、パディング、利用モード

-e: 暗号化
-d: 復号
-in: 入力ファイル(平文)
-out: 出力ファイル(暗号文)
-アルゴリズム: -aes256, -camellia256, -rc4など

-aes128
無線LANなどの通信データの暗号化に用いられる暗号化アルゴリズム。「Advanced Encryption Standard」の略
データの送信者と受信者が同じ暗号鍵を用いて、暗号化と復号を実行
128ビット長
通信データを区切り、置き換え・並べ替えのセットを複数回繰り返すアルゴリズム。最もセキュリティが強固。
base64はバイナリをエンコード

暗号化と復号化

$ echo '220104_input_text' | openssl enc -e -aes128 | base64
$ echo 'U2FsdGVkX1/miQdEamHLeWn5BmGbLJ3O+LpZTnWX8aRM1WSdbm6rr/2wZU68iqKZ' | openssl enc -d -aes128 -base64
enter aes-128-cbc decryption password:
*** WARNING : deprecated key derivation used.
Using -iter or -pbkdf2 would be better.
220104_input_text

SSL certificate renewal

1. Create CSR

openssl req -new -key example.com.key -out example.com.csr

2. Apply SSL certificate to certificate authority
Application of SSL certificate to certificate authority using CSR created.

3. When a certificate is issued from a certificate authority, replace to install.

4. apache server restart

5. Confirm the installation of the certificate.

新規の発行と然程変わらなそうですね。

openssl x509でRSA秘密鍵、CSRから証明書(CRT)を作成する

まつ、csrと秘密鍵がある状態です。
[vagrant@localhost ssl]$ ls
ca.csr ca.key

CRTファイルとは??
CRTファイルは、SSL証明書会社が、CSRファイルに情報を付加して秘密鍵で暗号化したもの。サーバー証明書などと言われる。
証明書会社の秘密鍵に対応する公開鍵は各ブラウザに内蔵されているため、CSRファイルの内容を安全に送信できる。

openssl x509: 秘密鍵で自己署名した証明書を作成する

[vagrant@localhost ssl]$ openssl x509 -req -days 365 -in ca.csr -signkey ca.key -out ca.crt
Signature ok
subject=/C=ja/ST=tokyo/L=shibuya/O=hpscript/OU=developement/CN=hpscript/emailAddress=info@hpscript.com
Getting Private key

まじか!!!!!!!!!!!!!!!

opensslでRSA秘密鍵の作成方法

openssl genrsa -out ca.key 2048で作成する
genrsaのオプションを確認しておこう。-out fileでファイルを作成する。2048は2048bitという意味。

usage: genrsa [args] [numbits]
-des encrypt the generated key with DES in cbc mode
-des3 encrypt the generated key with DES in ede cbc mode (168 bit key)
-idea encrypt the generated key with IDEA in cbc mode
-seed
encrypt PEM output with cbc seed
-aes128, -aes192, -aes256
encrypt PEM output with cbc aes
-camellia128, -camellia192, -camellia256
encrypt PEM output with cbc camellia
-out file output the key to ‘file
-passout arg output file pass phrase source
-f4 use F4 (0x10001) for the E value
-3 use 3 for the E value
-engine e use engine e, possibly a hardware device.
-rand file:file:…
load the file (or the files in the directory) into
the random number generator

openssl genrsa -out ca.key 2048と打ち込みます。

[vagrant@localhost ssl]$ openssl genrsa -out ca.key 2048
Generating RSA private key, 2048 bit long modulus
..............+++
.....+++
e is 65537 (0x10001)

ca.keyができるのがわかります。

[vagrant@localhost ssl]$ ls
ca.key

ca.keyの中身を見てみます。

-----BEGIN RSA PRIVATE KEY-----
MIIEogIBAAKCAQEAmJ4B3ZcX+fD+dDWaE+76QxYd8Z9ooLwGWneFfpZyOYBDP291
rMMzVrSA/tAH0HfXFBKuP8rmtEB23YEzcy4OKOrTXIZqoKfGO6tTgDQYFSTvGJoN
WSpf3CZqqVy6nTyeOOUfMiN6SdWgZV6ZNYx3OPpCacPCVpaYgmLAVL7MmQr+nTGs
fFzB8G3acReKaEa1LFDUbMf1TYj+pK6cNy5KDU3jKLbfWHf6o+n7rFi4ZhLw6DCD
HEJpy2CLxO/RdjpC7Vil+eJl99AdIbGOOdRwAnJZ5TfNzINXKg91jWYByaIc0kqS
Vj4snaHADrJkEiKF//B17qsbPXFwG2WbcA+A2wIDAQABAoIBAChWixOwneu4IOlC
Sak/HvKgY+W7RoJFcEB1GtmsliBQoHWh1i6FoYonR3kSLx6Qrk5l6Zx+2p+F8mT1
g03MPH3gI2FvPbuc3K5kyDs4iaz9CB0uipyosJGVrdd55PEuVnufQ7GS4v2k8zIX
4NLgf5qVuvwNe847G7BKvZ8olxdUAh5HEbi8OigI3jHJk/uEXrp48aLF9uU/u6l9
AOwOo44bh0adt1Iu+7HAxS/huFXxwlLqxkCW3iYrAG6A9EgScGdljg7L812meRNJ
Am6/1euX8Zq/rWPkiXds2yTiY5RmI/1TeaHhhLqOMqkGbpxYPCial6uFYfiCgF/Q
uH2tfvECgYEAxzD7M/JMNDQC2Ak9jEMKABFlC60p4BhdFi0KRMZbBfNrBnR/f4zg
+t5dtVzFJX0k5fPD5Dx5KV1LGsmbQNzvfBtvNcraXjICGWEUwaTVV16WkHJt30c8
FeN27pTFXS30qAgPDPn818nQvdesVjEghL1Z/B6jmodtKsGcUkDYPC8CgYEAxCSi
hoehoge
-----END RSA PRIVATE KEY-----

できてます。

オレオレ証明書の作成

認証機関ではない身元が不確かな機関が発行した証明書
オレオレ証明書というのだから、自分で発行した証明書ということだろう

mod_ssl
Apache Module mod_ssl
This module provides SSL v3 and TLS v1.x support for the Apache HTTP Server.
TLSの最新はv1.3だから対応してそう

[vagrant@localhost ~]$ httpd -v
Server version: Apache/2.2.15 (Unix)
Server built: Jun 19 2018 15:45:13
[vagrant@localhost ~]$ rpm -aq | grep mod_ssl

sudo yum isntall mod_ssl openssl
mod_sslとopensslをインストールする

[vagrant@localhost /]$ sudo yum install mod_ssl openssl
[vagrant@localhost /]$ openssl version
OpenSSL 1.0.2n  7 Dec 2017

入りました^^

list-standard-commands
[vagrant@localhost /]$ openssl list-standard-commands
asn1parse
ca
ciphers
cms
crl
crl2pkcs7
dgst
dh
dhparam
dsa
dsaparam
ec
ecparam
enc
engine
errstr
gendh
gendsa
genpkey
genrsa
nseq
ocsp
passwd
pkcs12
pkcs7
pkcs8
pkey
pkeyparam
pkeyutl
prime
rand
req
rsa
rsautl
s_client
s_server
s_time
sess_id
smime
speed
spkac
srp
ts
verify
version
x509

genrsaがありますね。
CAとはCertificate Authority(認証局)
open genrsa -out ca.key 2048
-> 2048bitのに認証局キーを生成する