証明書の取得方法
このページは英語版のページが機械翻訳されたものです。英語版との間に矛盾または不一致がある場合は、英語版を正としてください。
このドキュメントでは、ScalarDL に登録するための証明書を取得する方法について説明します。
ScalarDL にはいくつかの種類の認証方法があります。認証方法として digital-signature
を使用する場合は、秘密鍵と証明書ファイルを用意する必要があります。認証方法の詳細については、ScalarDL 認証ガイド を参照してください。
秘密鍵と証明書の要件
digital-signature
を認証方法として使用する場合は、次の要件を満たす秘密鍵と証明書を作成する必要があります。
SEC1
またはPKCS#8
鍵- アルゴリズムとして
ECDSA
- 曲線パラメータとして
P-256
- ハッシュ関数として
SHA256
ScalarDL は証明書の有効期限をチェックしません。そのため、ScalarDL が使用する証明書には任意の有効期限を設定できます。
秘密鍵と証明書ファイルを作成する
- 自己署名証明書
- CFSSL サーバー
- サードパーティ CA またはプライベート CA
自己署名証明書は次のように作成できます。
この例では、SEC1
鍵を作成します。
- CFSSL
- OpenSSL
前提条件
次の手順では、cfssl および cfssljson コマンドラインツールをインストールする必要があります。
ローカル CA を作成する
-
作業ディレクトリを作成します。
mkdir -p ${HOME}/scalardl/digital-signature/certs/
-
作業ディレクトリを
${HOME}/scalardl/digital-signature/certs/
に変更します。cd ${HOME}/scalardl/digital-signature/certs/
-
CA の情報を含む JSON ファイルを作成します。
cat << 'EOF' > ${HOME}/scalardl/digital-signature/certs/ca.json
{
"CN": "scalardl-example-ca",
"key": {
"algo": "ecdsa",
"size": 256
},
"names": [
{
"C": "JP",
"ST": "Tokyo",
"L": "Shinjuku",
"O": "ScalarDL Example CA"
}
]
}
EOF -
CA 秘密鍵と証明書ファイルを作成します。
cfssl gencert -initca ca.json | cfssljson -bare ca
-
CA 構成を含む JSON ファイルを作成します。
cat << 'EOF' > ${HOME}/scalardl/digital-signature/certs/ca-config.json
{
"signing": {
"default": {
"expiry": "87600h"
},
"profiles": {
"scalardl-example-ca": {
"expiry": "87600h",
"usages": [
"signing",
"key encipherment",
"server auth"
]
}
}
}
}
EOF
各コンポーネントの秘密鍵と証明書を作成する
- ScalarDL Ledger
- ScalarDL Auditor
- クライアント
-
ScalarDL Ledger の情報を含む JSON ファイルを作成します。
cat << 'EOF' > ${HOME}/scalardl/digital-signature/certs/ledger.json
{
"CN": "scalardl-ledger",
"hosts": [
"ledger.scalardl.example.com",
"localhost"
],
"key": {
"algo": "ecdsa",
"size": 256
},
"names": [
{
"C": "JP",
"ST": "Tokyo",
"L": "Shinjuku",
"O": "ScalarDL Ledger Example"
}
]
}
EOF -
ScalarDL Ledger の秘密鍵と証明書ファイルを作成します。
cfssl gencert -ca ca.pem -ca-key ca-key.pem -config ca-config.json -profile scalardl-example-ca ledger.json | cfssljson -bare ledger
-
秘密鍵と証明書ファイルが作成されたことを確認します。
ls -1
次のような結果が表示されます:
ca-config.json
ca-key.pem
ca.csr
ca.json
ca.pem
ledger-key.pem
ledger.csr
ledger.json
ledger.pemこの場合:
ledger-key.pem
は ScalarDL Ledger の秘密鍵ファイルです。ledger.pem
は ScalarDL Ledger の証明書ファイルです。ca.pem
はルート CA の証明書ファイルです。
-
ScalarDL Auditor の情報を含む JSON ファイルを作成します。
cat << 'EOF' > ${HOME}/scalardl/digital-signature/certs/auditor.json
{
"CN": "scalardl-auditor",
"hosts": [
"auditor.scalardl.example.com",
"localhost"
],
"key": {
"algo": "ecdsa",
"size": 256
},
"names": [
{
"C": "JP",
"ST": "Tokyo",
"L": "Shinjuku",
"O": "ScalarDL Auditor Example"
}
]
}
EOF -
ScalarDL Auditor の秘密鍵と証明書ファイルを作成します。
cfssl gencert -ca ca.pem -ca-key ca-key.pem -config ca-config.json -profile scalardl-example-ca auditor.json | cfssljson -bare auditor
-
秘密鍵と証明書ファイルが作成されたことを確認します。
ls -1
次のような結果が表示されます:
auditor-key.pem
auditor.csr
auditor.json
auditor.pem
ca-config.json
ca-key.pem
ca.csr
ca.json
ca.pemこの場合:
auditor-key.pem
は ScalarDL Auditor の秘密鍵ファイルです。auditor.pem
は ScalarDL Auditor の証明書ファイルです。ca.pem
はルート CA の証明書ファイルです。
-
クライアントの情報を含む JSON ファイルを作成します。
cat << 'EOF' > ${HOME}/scalardl/digital-signature/certs/client.json
{
"CN": "scalardl-client",
"hosts": [
"client.scalardl.example.com",
"localhost"
],
"key": {
"algo": "ecdsa",
"size": 256
},
"names": [
{
"C": "JP",
"ST": "Tokyo",
"L": "Shinjuku",
"O": "ScalarDL Client Example"
}
]
}
EOF -
クライアントの秘密鍵と証明書ファイルを作成します。
cfssl gencert -ca ca.pem -ca-key ca-key.pem -config ca-config.json -profile scalardl-example-ca client.json | cfssljson -bare client
-
秘密鍵と証明書ファイルが作成されたことを確認します。
ls -1
次のような結果が表示されます:
ca-config.json
ca-key.pem
ca.csr
ca.json
ca.pem
client-key.pem
client.csr
client.json
client.pemこの場合:
client-key.pem
はクライアントの秘密鍵ファイルです。client.pem
はクライアントの証明書ファイルです。ca.pem
はルート CA の証明書ファイルです。
前提条件
次の手順を実行するには、openssl
コマンドラインツールをインストールする必要があります。
作業ディレクトリを作成する
-
作業ディレクトリを作成します。
mkdir -p ${HOME}/scalardl/digital-signature/certs/
-
作業ディレクトリを
${HOME}/scalardl/digital-signature/certs/
に変更します。cd ${HOME}/scalardl/digital-signature/certs/
各コンポーネントの秘密鍵と証明書を作成する
- ScalarDL Ledger
- ScalarDL Auditor
- クライアント
-
EC パラメータを作成します。
openssl ecparam -name prime256v1 -out prime256v1.pem
-
秘密鍵と CSR を作成します。
openssl req -new -newkey ec:prime256v1.pem -nodes -keyout ledger-key.pem -out ledger.csr
-
PKCS#8
鍵をSEC1
鍵に変換します。openssl ec -in ledger-key.pem -out ledger-key.pem
-
ScalarDL Ledger の証明書を作成します。
openssl x509 -req -days 3650 -signkey ledger-key.pem -in ledger.csr -out ledger.pem
-
秘密鍵と証明書ファイルが作成されたことを確認します。
ls -1
次のような結果が表示されます:
ledger-key.pem
ledger.csr
ledger.pem
prime256v1.pemこの場合:
ledger-key.pem
は ScalarDL Ledger の秘密鍵ファイルです。ledger.pem
は ScalarDL Ledger の証明書ファイルです。
-
EC パラメータを作成します。
openssl ecparam -name prime256v1 -out prime256v1.pem
-
秘密鍵と CSR を作成します。
openssl req -new -newkey ec:prime256v1.pem -nodes -keyout auditor-key.pem -out auditor.csr
-
PKCS#8
鍵をSEC1
鍵に変換します。openssl ec -in auditor-key.pem -out auditor-key.pem
-
ScalarDL Auditor の証明書を作成します。
openssl x509 -req -days 3650 -signkey auditor-key.pem -in auditor.csr -out auditor.pem
-
秘密鍵と証明書ファイルが作成されたことを確認します。
ls -1
次のような結果が表示されます:
auditor-key.pem
auditor.csr
auditor.pem
prime256v1.pemこの場合:
auditor-key.pem
は ScalarDL Auditor の秘密鍵ファイルです。auditor.pem
は ScalarDL Auditor の証明書ファイルです。
-
EC パラメータを作成します。
openssl ecparam -name prime256v1 -out prime256v1.pem
-
秘密鍵と CSR を作成します。
openssl req -new -newkey ec:prime256v1.pem -nodes -keyout client-key.pem -out client.csr
-
PKCS#8
鍵をSEC1
鍵に変換します。openssl ec -in client-key.pem -out client-key.pem
-
クライアントの証明書を作成します。
openssl x509 -req -days 3650 -signkey client-key.pem -in client.csr -out client.pem
-
秘密鍵と証明書ファイルが作成されたことを確認します。
ls -1
次のような結果が表示されます:
client-key.pem
client.csr
client.pem
prime256v1.pemこの場合:
client-key.pem
はクライアントの秘密鍵ファイルです。client.pem
はクライアントの証明書ファイルです。
CFSSL サーバー に証明書ファイルの作成を依頼できます。
前提条件
次の手順では、cfssl および cfssljson コマンドラインツールをインストールする必要があります。
秘密鍵と証明書ファイルを作成する
-
CFSSL や OpenSSL などのツールを使用し、要件 に基づいて秘密鍵と CSR を作成します。CFSSL タブで
cfssl
コマンドを使用して秘密鍵と CSR を作成する例を確認できます。また、OpenSSL タブでopenssl
コマンドを使用して秘密鍵と CSR を作成する例を確認できます。 -
CFSSL サーバーから証明書を要求します。
注記- CFSSL サーバーエンドポイント URI を指定するには、
-remote
オプションが必要です。 - 出力される鍵ファイルのプレフィックスを指定するには、cfssljson の
-bare
オプションが必要です。
- CFSSL サーバーエンドポイント URI を指定するには、
- ScalarDL Ledger
- ScalarDL Auditor
- クライアント
cfssl sign -remote "<IP_ADDRESS_OF_CFSSL_SERVER>:<PORT_OF_CFSSL_SERVER>" -profile "ledger" ledger.csr | cfssljson -bare ledger -