[openssl：用語集・拡張子集]証明書作成例

# 本記事の目的
オレオレ証明書作成/鍵情報の確認時などに効率よく情報参照するためにまとめてたものです。
※1　文言や拡張子の意味をど忘れしてしまうことがあり、まとめていたものになります。網羅ではなく、使用頻度が高いものだけをリストアップしています。(オレオレ証明書を作る中で必要なことがメインとなっています不足があるかと思いますが、申し訳ないです。

※2 個々の意味などは、先人の方々が他サイトでまとめられておりますので省略してます。


# 用語集
|用語  |概要  |
|---|---|
|CA|Certification Authority。 <br>認証局を指す。 |
|CRL|Certificate Revocation List。 <br>失効証明書リスト。 |
|CSR|Certificate Signing Request。<br>証明書署名要求ファイル。  |  
|PKI|Public Key Infrastructure。 <br>公開鍵暗号方式という暗号技術を使用したセキュリティ・インフラ。 |
|PKCS|Public-Key Cryptography Standards。 <br>公開鍵暗号標準。 |
|クライアント証明書|クライアントがサーバにアクセス時に使用する身分証のようなもの。 |    
|サーバ証明書|Webサイトの身分証。サーバ証明書は決められたCAが管理・発行する。 |    
|X.509 証明書|公開鍵証明書の標準フォーマット。 | 
|RSA|インターネット通信で用いられる公開鍵暗号の1つ | 

 
# 拡張子集

|用語  |概要  |ファイル(ヘッダ/フッタ)  |
|---|---|---|
|.csr|証明書署名要求ファイル。<br>|ヘッダ：「-----BEGIN CERTIFICATE REQUEST-----」 <br> フッタ：「-----END CERTIFICATE REQUEST-----　」 |
|.crt|SSL証明書。CSRファイルに情報を付加。<br>秘密鍵を用いて暗号化したものを指す。|ヘッダ：「-----BEGIN CERTIFICATE-----」 <br>フッタ：「-----END CERTIFICATE-----」  |
|.cer|証明書。<br>マイクロソフト使用の証明書拡張子。<br>crtと中身は同じ。|-|
|.key|鍵ファイル。公開鍵、秘密鍵を指す。|(1)秘密鍵の場合<br>ヘッダ：「-----BEGIN RSA PRIVATE KEY-----」 <br>フッタ：「-----END RSA PRIVATE KEY-----」 <br>(2)公開鍵の場合<br>ヘッダ；「-----BEGIN PUBLIC KEY-----」<br>フッタ：「-----END PUBLIC KEY-----」|
|.p12/<br>.pfx|PKCSの12番目の仕様。<br>鍵や証明書をひとつのファイルにまとめて取り扱うための形式。公開鍵、秘密鍵、クライアント証明書、中間CA証明書が含まれる。秘密鍵とクライアント証明書はパスワード必須。|テキストではない|
|.pem|証明書や鍵ファイルデータを格納するもの。<br>一意に決まらない。テキストファイルである。|例：証明書＋鍵ファイルの場合、下記のように連続して表記される。<br>-----BEGIN CERTIFICATE-----<br>（証明書ファイルをBase64でエンコードした文字列）<br>-----END CERTIFICATE-----<br>-----BEGIN RSA PRIVATE KEY-----<br> (鍵ファイルをBase64でエンコードした文字列)<br> -----END RSA PRIVATE KEY----- <br>|
 


# opensslコマンドによる各種ファイル生成

## 鍵生成方法
openssl コマンドを用いて生成する。実際には、オレオレ証明書を作ることが多いかと思いますので、その場合は、「自己証明書の作成」箇所を参照ください。

###（１）秘密鍵の生成
RSA(公開鍵暗号の一種)での秘密鍵生成

``` sh
openssl genrsa 1024 > privateKey.pem
``` 
標準出力される鍵はPEMエンコードされているので、ファイル名はpemとする。

###（２）公開鍵の生成
RSA秘密鍵を用いて、公開鍵を生成する

``` sh
openssl rsa -in privateKey.pem -pubout -out publicKey.pem
``` 

## 自己証明書の作成
認証局に依頼するのではなく（お金がかかるため）、自分が作成した秘密鍵を用いた、自己署名証明書を作る場合が多いかと思います。
### （１）秘密鍵の作成

``` sh
openssl genrsa 1024 > privateKey.pem
``` 
###（２）CSRの作成
証明書を発行するためには、署名者に証明書署名要求(CSR)というファイルを作成し渡す必要があります。ここでは、自身で作成し、自身で自己署名署名書の発行に用います。
※コマンド実行すると、組織名などの入力が求められますので、適宜必要に応じて入力します。

``` sh
openssl req -new -key privateKey.pem > myRequest.csr
``` 
###（３）自己署名証明書の発行
-signkey オプションを使い、自分自身の秘密鍵を指定します。
(期限を365日としてますが、適宜変更ください。)

``` sh
openssl x509 -req -in myRequest.csr -signkey privateKey.pem -out publicKey.crt -days 365
``` 
⇨ここまでで、自己署名証明書の作成が完了です。これでCRTファイル(SSL証明書)が出来上がりました。

###（４）p12ファイルの作成

```sh
openssl pkcs12 -export -in publicKey.crt -inkey privateKey.pem -out pkcs.p12  
```

# 鍵、証明書ファイルの中身を確認する

## 鍵情報表示
### （１）秘密鍵の表示
#### ①PEMエンコードの場合

``` sh
openssl rsa -in privateKey.pem -text -noout
``` 
#### ②DERエンコードの場合
※DERはバイナリ表記なので、PEMを使うことのほうが多いかとは思います。

``` sh
openssl rsa -in privateKey.der -inform der -text -noout
``` 

### （２）公開鍵の表示
#### ①PEMエンコードの場合
``` sh
openssl rsa -pubin -in publicKey.pem -text -noout
``` 
#### ②DERエンコードの場合
``` sh
openssl rsa -pubin -in publicKey.pem -inform der　-text -noout
``` 
## SSL証明書表示 
``` sh
openssl x509 -in publicKey.crt -text -noout
``` 
## CSRの中身表示
``` sh
openssl req -in myRequest.csr -text -noout
``` 
## 証明書から公開鍵を取り出す
``` sh
openssl x509 -in publicKey.crt -pubkey 
``` 
## pem ファイルに含まれる証明書の確認方法
``` sh
openssl x509 -text -fingerprint -noout -in "ファイル名.pem"
```