5
4

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 5 years have passed since last update.

ADFS用にオレオレ証明書作った 〜OpenSSL編

Last updated at Posted at 2017-12-26

はじめに

kintoneでSAML認証を使用したSSOを実現するのオレオレ証明書を発行する設定です。

ここまでのWindows Server構築のところは別記事を参考してほしいな!
LightSailでWindows Server立ち上げて日本語化してみた

1記事にまとめると長くなるから小出しにしてるよ!
Tips的にわけとくほうがあとからまた同じ作業をしたくなった時に備忘録的に見返しやすいので (自分のため

今回せっかくWindows Serverがあって、認証局もインスコしてですよ。
せっかくだから認証局使って証明書発行しろよとも思ったんですが、ラクなほうに逃げてしまいました。どうもすいません。

自PCがMacでopensslが入っているので、これを最新版にして自己証明書を作ります(結局それ

・・・openssl手軽で使いやすいの(
あと改めてopensslについて復習も兼ねてオプション再考してみたかったんだごめん。

Windowsでも使えるOpenSSL

Windowsでもopensslのパッケージインストーラーがあります。
インストールしたらあとはパス通してPowerShellなりコマンドプロンプトなりで実行すれば、基本的な使い方は一緒。
Shining Light Productions

opensslで証明書を作成するといってもコマンドの入力パターンはいくつもあります。
ここで挙げているのはあくまで一例。
docやman、helpなどを良く読んで適宜オプションなどは読み替えてね!

OpenSSLアップデート

自分のMacではHomebrewでパッケージを入れてるので、とりあえずパッケージを最新の状態にします。
自分の環境の場合、依存関係など特に問題ないので全パッケージに対してアップデートかけてます。

-> % brew update && brew upgrade

OpenSSLでオレオレ証明書作成 〜 CSR+秘密鍵作成

CSRと秘密鍵をセットで生成

まずCSRと秘密鍵を作成。
以下のようにするとセットで生成できる。
秘密鍵はパスフレーズ付きで生成。1

Subjectを指定しない場合:ウィザード形式で聞かれる
SHA-2指定(-sha256):基本指定する必要はないが、環境によっては明示的に指定する必要がある場合も

-> % openssl req -new -sha256 -newkey rsa:2048 -keyout key_file_name.key 
-out csr_file_name.csr
Generating a 2048 bit RSA private key
........................................+++
...................+++
writing new private key to 'key_file_name.key'
Enter PEM pass phrase:
Verifying - Enter PEM pass phrase:
-----
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.
-----
Country Name (2 letter code) []:JP
State or Province Name (full name) []:Osaka Pref.
Locality Name (eg, city) []:Osaka City.
Organization Name (eg, company) []:KINTONE SSO TEST Corp.
Organizational Unit Name (eg, section) []:
Common Name (eg, fully qualified host name) []:fqdn.example.com
Email Address []:

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
-newkey rsa:2048
CSRで使う秘密鍵の生成を同時に行う。暗号方式はRSA、鍵長は2048bitを指定。
-keyout key_file_name.key
key_file_name.keyという名前で秘密鍵を生成する
-out csr_file_name.csr
csr_file_name.csrという名前でCSRを生成する
-sha256
署名アルゴリズムでSHA-2を指定

CSRの中身を確認

-> % openssl req -noout -text -in csr_file_name.csr 

CSRの中身を確認 〜 署名アルゴリズムがSHA-2になっているか

-> % openssl req -noout -text -in csr_file_name.csr | grep sha256
    Signature Algorithm: sha256WithRSAEncryption

(補足)あとから秘密鍵を暗号化する(AES256)

秘密鍵を-nodesなどを付けて暗号化せずに生成している場合も、後からパスフレーズ付きにすることが可能。

-> % openssl rsa -aes256 -in key_file_name.key  -out key_file_name.key 
writing RSA key
Enter PEM pass phrase:
Verifying - Enter PEM pass phrase:

秘密鍵の中身を確認

-> % openssl rsa -noout -text -in key_file_name.key
Enter pass phrase for key_file_name.key:
Private-Key: (2048 bit)

OpenSSLでオレオレ証明書作成 〜 生成した秘密鍵で署名したオレオレ証明書を作成

生成した秘密鍵を使用して証明書を作成

本来はここで作成したCSRを証明書発行機関などに送って証明書を発行してもらうのだが、今回は自己署名なので自分で作成した秘密鍵を使用して署名を行う。

SHA-2指定(-sha256):CSR作成時と異なり、ここでは明示的に指定しないと署名アルゴリズムがSHA-1になった。2

-> % openssl x509 -in csr_file_name.csr -days 3650 -req -signkey key_file_name.key
-out crt_file_name.crt -sha256
Signature ok
subject=/C=JP/ST=Osaka Pref./L=Osaka City./O=KINTONE SSO TEST Corp./CN=fqdn.example.com
Getting Private key
Enter pass phrase for key_file_name.key:

完成した証明書の確認

-> % openssl x509 -noout -text -in crt_file_name.crt           

完成した証明書の確認 〜 署名アルゴリズムがSHA-2になっているか

-> % openssl x509 -noout -text -in crt_file_name.crt | grep sha256
    Signature Algorithm: sha256WithRSAEncryption
    Signature Algorithm: sha256WithRSAEncryption

OpenSSLでオレオレ証明書作成 〜 PEM形式からPKCS#12(.pfx)形式への変換

ADFSに組み込む時には、PKCS#12(.pfx)形式で組み込む必要がある。
ということでPEM形式からPKCS#12への変換をかける。

PKCS#12形式:秘密鍵と証明書をひとつのファイルに格納する方式

-> % openssl pkcs12 -export -inkey key_file_name.key -in crt_file_name.crt 
-out pfx_file_name.pfx
Enter pass phrase for key_file_name.key:
Enter Export Password:
Verifying - Enter Export Password:
  1. 今回に関してはPEM形式では利用しないのでどっちでも良い。PEM形式で利用する時は一般的には暗号化しておくほうが安全。秘密鍵自体は原則見られてはいけないものなのでファイルパーミッションなども注意

  2. GSやシマンテックなどの証明書発行機関で証明書を発行してもらう時には昨今基本的にはSHA-2証明書しか出してないかと思うので、そこまでシビアに捉えなくて良いかもしれない。しかし自己署名でオレオレ証明書を作成する、オレオレ認証局立てる時などは環境設定なども含め注意が必要

5
4
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
5
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?