はじめに
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: