0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

オレオレ証明書発行

Last updated at Posted at 2020-06-26

やりたいこと

  • 自宅用WEBサービスをアクセス制限(クライアント証明書による認証)したい。
  • 今更ですが・・・

やりたいこと(詳細)

  • オレオレ認証局から、WEBサーバ証明書/クライアント証明書を発行します。
  • 証明書の発行は、Ansibleを使用します(コマンドを叩きたくない)

制限事項

  • apacheの設定は当記事対象外とします。
  • 失効処理とCRL発行処理は手動(easy-rsaコマンド)とします。

環境/ツール

手順

手順1.easy-rsaのインストール

  • EPELにeasy-rsaがあるので、YUMインストール
# yum install epel-release
# yum install easy-rsa
  • 認証局用専用ユーザの作成(certadmin)
# useradd certadmin
  • easy-rsa用フォルダの作成、必要ファイルのリンク作成
# su - certadmin
$ mkdir easy-rsa
$ chmod 700 easy-rsa
$ ln -s /usr/share/easy-rsa/3/* ~/easy-rsa/

手順2.easy-rsaでオレオレ認証局構築

  • 認証局の初期化(情報を格納するdirectory(pki/)を作成(初期化)します。
$ cd easy-rsa
$ ./easyrsa init-pki

init-pki complete; you may now create a CA or requests.
Your newly created PKI dir is: /home/certadmin/easy-rsa/pki
  • 認証局のを作成(パスワードなし、CN=MyHomeCA)します。
$ ./easyrsa build-ca nopass
Using SSL: openssl OpenSSL 1.1.1c FIPS  28 May 2019
Generating RSA private key, 2048 bit long modulus (2 primes)
....................+++++
.................+++++
e is 65537 (0x010001)
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Common Name (eg: your user, host, or server name) [Easy-RSA CA]:MyHomeCA

CA creation complete and you may now import and sign cert requests.
Your new CA certificate file for publishing is at:
/home/certadmin/easy-rsa/pki/ca.crt

$ 
  • 空のCRLのファイルを生成(Apacheでクライアント認証時、CRL証明書情報が必要であるため作成)
$ ./easyrsa gen-crl
Using SSL: openssl OpenSSL 1.1.1c FIPS  28 May 2019
Using configuration from /home/certadmin/easy-rsa/pki/easy-rsa-27657.yrhss7/tmp.dB4v6v

An updated CRL has been created.
CRL file: /home/certadmin/easy-rsa/pki/crl.pem


$ 

手順3.認証局の証明書内容確認

$ ls -l pki/ca.crt       ....CA公開鍵
-rw------- 1 certadmin certadmin 1192  5月 21 17:43 pki/ca.crt
$ ls -l pki/private/ca.key    ....CA秘密鍵
-rw------- 1 certadmin certadmin 1679  5月 21 17:43 pki/private/ca.key
$ ls -l pki/crl.pem        ....CRL情報
-rw------- 1 certadmin certadmin 642  5月 21 17:47 pki/crl.pem

$ openssl x509 -in pki/ca.crt -noout -subject -issuer -dates
subject=CN = MyHomeCA              ....CA公開鍵の情報確認(CNと期間は10年間で生成されていることを確認)
issuer=CN = MyHomeCA
notBefore=May 21 08:43:42 2020 GMT
notAfter=May 19 08:43:42 2030 GMT
[certadmin@myhome easy-rsa]$ 

手順4.githubからAnsible-playbook取得

git clone https://github.com/mishikawan/generatecert-ansible.git

手順4-1.サーバ証明書の発行内容を変更

  • 発行したいサーバ証明書情報を記載
  • 以下のようなサーバ証明書を作成したい場合は、server-certs.csvに以下を記述します
  • CSVの一行目はカラム情報のため変更はしないでください。
name country state locality organization organizational_unit
myhome.local JP Osaka Osaka MyHome MyHome
server-certs.csv
name,country,state,locality,organization,organizational_unit
myhome.local,JP,Osaka,Osaka,MyHome,MyHome

手順4-2.クライアント証明書の発行内容を変更

  • 発行したいクライアント証明書情報を記載
  • 以下のようなクライアント証明書を作成したい場合は、client-certs.csvに以下を記述します
  • CSVの一行目はカラム情報のため変更はしないでください。
name メール パスワード organizational_unit
user001 user001@myhome.local pass001 Development
user002 user002@myhome.local pass002 Production
user003 user003@myhome.local pass003 Sales
client-certs.csv
name,mailaddr,pass,organizational_unit
user001,user001@myhome.local,pass001,Development
user002,user002@myhome.local,pass002,Production
user003,user003@myhome.local,pass003,Sales

手順5.証明書の発行(ansible)の実行

ansible-playbook generate_certs.yml

手順6.証明書発効の確認

  • ansible(generate_certs.yml)のvarsに従いファイルが作成されます。
generate_certs.yml
  vars:
    ca_private: "~/easy-rsa/pki/private/ca.key"
    ca_public: "~/easy-rsa/pki/ca.crt"
    publicdir: "~/easy-rsa/pki/issued"
    csrdir: "~/easy-rsa/pki/reqs"
    privatedir: "~/easy-rsa/pki/private"
    pkcs12dir: "~/easy-rsa/pki/private"
    server_csv: "server-certs.csv"
    client_csv: "client-certs.csv"
  • CSRファイル
$ ls -l ~/easy-rsa/pki/reqs/
-rw-rw-r-- 1 certadmin certadmin 1119  6月 26 22:31 myhome.local.csr
-rw-rw-r-- 1 certadmin certadmin 1013  6月 26 22:32 user001.csr
-rw-rw-r-- 1 certadmin certadmin 1013  6月 26 22:32 user002.csr
-rw-rw-r-- 1 certadmin certadmin 1005  6月 26 22:32 user003.csr
  • 秘密鍵とPKCS12ファイル
$ ls -l ~/easy-rsa/pki/private/
-rw------- 1 certadmin certadmin 1675  5月 21 09:52 ca.key
-rw------- 1 certadmin certadmin 1679  6月 26 22:31 myhome.local.key
-rw------- 1 certadmin certadmin 1679  6月 26 22:32 user001.key
-r-------- 1 certadmin certadmin 3376  6月 26 22:32 user001.p12
-rw------- 1 certadmin certadmin 1675  6月 26 22:32 user002.key
-r-------- 1 certadmin certadmin 3376  6月 26 22:32 user002.p12
-rw------- 1 certadmin certadmin 1675  6月 26 22:32 user003.key
-r-------- 1 certadmin certadmin 3376  6月 26 22:35 user003.p12
  • 公開鍵ファイル
$ ls -l ~/easy-rsa/pki/issued/
-rw-rw-r-- 1 certadmin certadmin 1298  6月 26 22:31 myhome.local.crt
-rw-rw-r-- 1 certadmin certadmin 1188  6月 26 22:32 user001.crt
-rw-rw-r-- 1 certadmin certadmin 1188  6月 26 22:32 user002.crt
-rw-rw-r-- 1 certadmin certadmin 1180  6月 26 22:35 user003.crt
0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?