検索条件
全26件
(2/3ページ)
Last died with error (see error log for more information): kevent(EV_ADD, READ, 56) failed: Bad file descriptor(実際は改行しません)
basicConstraints=CA:false(CA:true を CA:false に)
basicConstraints=CA:false(CA:true を CA:false に)
# cd /root/BasekernelCA # openssl x509 -in cacet.pem -inform PEM -out cacert.der -outform DERここで作成した der 形式の証明書ファイルを Webサイト公開ディレクトリ等に設置し、Webページからダウンロード出来るようにしておきます。
# openssl genrsa -out private.key 2048この後生成する公開鍵とペアで使用されます。
# openssl req -new -sha512 -key private.key -out server.csr 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) [AU]:JP State or Province Name (full name) [Some-State]:Hokkaido Locality Name (eg, city) []:Sapporo Organization Name (eg, company) [Internet Widgits Pty Ltd]:Base Kernel Co,.Ltd. Organizational Unit Name (eg, section) []:labo Common Name (e.g. server FQDN or YOUR name) []:clione.basekernel.ne.jp Email Address []: Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []: An optional company name []:この手順で、当該の例では暗号化された CSR が server.csr ファイルに作成されます。
# openssl ca -out server.pem -infiles server.csrこの操作により、
Enter pass phrase for /root/BaseKernelCA/private/cakey.pem:と、プライベートCAを生成するときに設定したパスワードを入力後、
if [ -z "$DAYS" ] ; then DAYS="-days 395" ; fi # 13 month CADAYS="-days 14610" # 40 years REQ="$OPENSSL req $SSLEAY_CONFIG"(71行目付近)
if [ -z "$CATOP" ] ; then CATOP=/root/BaseKernelCA ; fiCADAYS はCAの有効日数。
# chmod +x /usr/src/crypto/openssl/apps/CA.shとして、スプリプトを実行可能状態にしておきます。
[ CA_default ] dir = /root/BaseKernelCA default_days = 7305 default_crl_days= 30 default_md = sha512 policy = policy_match [ policy_match ] countryName = match stateOrProvinceName = supplied organizationName = supplied organizationalUnitName = optional commonName = supplied emailAddress = optional [ req ] default_bits = 2048 default_md = sha512 [ req_distinguished_name ] countryName_default = JP stateOrProvinceName_default = Hokkaido 0.organizationName_default = Base Kernel Co., Ltd [ usr_cert ] basicConstraints=CA:true nsCertType = server [ v3_ca ] basicConstraints = CA:true nsCertType = sslCA, emailCAこの修正で、鍵長デフォルト 2,048bit、暗号化ハッシュ SHA-2(SHA512) に対応します。
# /usr/src/crypto/openssl/apps/CA.sh -newca
CA certificate filename (or enter to create) Making CA certificate ... Generating a 2048 bit RSA private key ...............................................................+++ .......................................+++ writing new private key to '/root/BaseKernelCA/private/./cakey.pem' Enter PEM pass phrase: (CAパスフレーズ入力) Verifying - Enter PEM pass phrase: (もう一度同じCAパスフレーズ入力) ----- 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]: (JP でよいのでこのままリターン) State or Province Name (full name) [Hokkaido]:(Hokkaido でよいのでこのままリターン) Locality Name (eg, city) []:Sapporo Organization Name (eg, company) [Base Kernel Co., Ltd]: Organizational Unit Name (eg, section) []:Base Net Common Name (eg, YOUR name) []:Base Kernel CA Email Address []:hoge@example.com Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []: (このままリターン) An optional company name []: (このままリターン) Using configuration from /etc/ssl/openssl.cnf Enter pass phrase for /root/BaseKernelCA/private/./cakey.pem: Check that the request matches the signature Signature ok (以下省略)実際には続いてこんな感じで詳細が出力されます:
[Client -> Server] AUTH DIGEST-MD5 [Server -> Client] 334 cmVhbG09ImV4YW1wbG...《以降省略》 [Client -> Server] dXNlcm5hbWU9ImluZm8uZXhhbXBsZS5jb20i...《以降省略》 [Server -> Client] 334 cnNwYXV0aD1mOTE2MGE0NzQ4MjE3MmNlMmMxNDk2NGFjZTUyN2VjOA== [Client -> Server] ZjkxNjBhNDc0ODIxNzJjZTJjMTQ5NjRhY2U1MjdlYzg= [Server -> Client] 235 Authentication successful.認証途上でサーバとやりとりするデータは、必ず Base64エンコードして送受信します。
realm="example.com",nonce="JQMKtdgbEhMra4GdAYmAjQ==",qop="auth",charset="utf-8", algorithm="md5-sess"・これらは、パラメータとその値です。
A1 = { H( { username-value, ":", realm-value, ":", passwd } ), ":", nonce-value, ":", cnonce-value, ":", authzid-value }ここで、
username-value = info.example.com (ユーザ名を平文で) realm-value = サーバから与えられた realm の値を複写 (example.com) passwd = userpassword (パスワードを平文で) nonce-value = サーバから与えられた nonce の値を複写(JQMKtdgbEhMra4GdAYmAjQ==) cnonce-value = lWF{[QuiRj}_L[PW (クライアント側でランダム文字列を生成する) authzid-value = サーバから与えられた authzid の値を複写としますが、通常、authzid パラメータは与えられませんので、この場合はこうしろと規定されています。
A1 = { H( { username-value, ":", realm-value, ":", passwd } ), ":", nonce-value, ":", cnonce-value }具体的には、まず username-value,realm-value,passwd を ':' で連結した文字列
info.example.com:example.com:userpasswordに対して、MD5ハッシュを算出し、
A2 = { "AUTHENTICATE:", digest-uri-value }ここで、digest-uri-value は、サーバタイプ、ホスト名、サーバ名を '/' で連結した文字列で、サーバタイプは 'smtp'、ホスト名は DNS MXレコードで検索できるFQDN、サーバ名は通常省略します。
AUTHENTICATE:smtp/mx.example.comA2 データ列に関しても MD5ハッシュ値を算出しておきます。
HEX( KD ( HEX(H(A1)), { nonce-value, ":" nc-value, ":", cnonce-value, ":", qop-value, ":", HEX(H(A2)) }))KD は2つの文字列を':'で連結の意、
46a5d6ccc156d8ca8da970723d455d17:JQMKtdgbEhMra4GdAYmAjQ==:00000001: lWF{[QuiRj}_L[PW:auth:e7280b0554e7e6636bd6a32ec6d5d2cf※ 表示上、改行しているが、実際は絶対に改行を入れないこと。
729303fe19230ab4d3733dd28ab2b0b2となります。
username="info.example.com",realm="example.com",nonce="JQMKtdgbEhMra4GdAYmAjQ==", cnonce="lWF{[QuiRj}_L[PW",nc=00000001,qop=auth,digest-uri="smtp/mx.example.com", response=729303fe19230ab4d3733dd28ab2b0b2,charset="utf-8"※ 表示上、改行しているが、実際は絶対に改行を入れないこと。
cnNwYXV0aD1mOTE2MGE0NzQ4MjE3MmNlMmMxNDk2NGFjZTUyN2VjOA==を Base64デコードすると、
rspauth=f9160a47482172ce2c14964ace527ec8が得られます。
A2 = { ":", digest-uri-value }に変えて処理したものになります。
[Client -> Server] AUTH CRAM-MD5 [Server -> Client] 334 PDIwMTYwNTA4MDE1NzMyLjQ2QTRFNENGRjUyMUBteDIuYmFzZWtlcm5lbC5uZS5qcD4= [Client -> Server] aW5mby5leGFtcGxlLmNvbSAxODBjYmQwNTdjNDQxOTFhYjRkOTU2NWQ3MzA2ZmVmZg== [Server -> Client] 235 Authentication successful.ここで、
PDIwMTYwNTA4MDE1NzMyLjQ2QTRFNENGRjUyMUBteDIuYmFzZWtlcm5lbC5uZS5qcD4=
<20160508015732.46A4E4CFF521@mx2.basekernel.ne.jp>という文字列を Base64エンコードしたもので、クライアント側でデコードして使用します。
H(K XOR opad, H(K XOR ipad, text))となっています。
180cbd057c44191ab4d9565d7306feffとなります。
aW5mby5leGFtcGxlLmNvbSAxODBjYmQwNTdjNDQxOTFhYjRkOTU2NWQ3MzA2ZmVmZg==となります。これは、
info.example.com 180cbd057c44191ab4d9565d7306feffを、そのまま Base64 エンコードしたものです。