〜 卓越した品質へ 〜

PythonでOpenSSLを使いたいってことで,pyOpenSSLをWindows10に設定しました。pyOpenSSLのロードに成功したので,次はPKCS#12ファイルをデコードしてみました。pyOpenSSLって慣れると簡単かも。

概要

pyOpenSSLでPKCS#12ファイルをデコードすると,pkcs12オブジェクトが生成されます。そのpkcs12オブジェクトを利用して,いろいろな処理を行っていきます。今回は,証明書を取り出して表示してみました。

サンプルソース

サンプルはこちらです。PKCS#12ファイルを読み込んで,パスワードを指定してデコードします。すると,pkcs12オブジェクトができるので,必要なコンポーネント(証明書や鍵など)を取り出します。

# -*- coding: utf-8 -*-
# pkcs#12ファイルをデコードする

import OpenSSL

# PKCS#12ファイルをオープンする
p12_input = open('user2.p12', 'rb')
try:
	buffer = p12_input.read()
finally:
	p12_input.close()

# PKCS#12ファイルをデコードする
p12 = OpenSSL.crypto.load_pkcs12(buffer, '1111')

# 証明書のコンポーネントを取得する
caCert = p12.get_ca_certificates()
userCert = p12.get_certificate()
friendlyName = p12.get_friendlyname()
pkey = p12.get_privatekey()

# 証明書をPEM形式に変換する(画面に出力するため)
pemCert = OpenSSL.crypto.dump_certificate(OpenSSL.crypto.FILETYPE_PEM, userCert)

# デコードしたオブジェクトを表示する
print('FriendlyName: %s' % friendlyName.decode('ascii'))
print('Certificate: %s' % pemCert.decode('ascii'))

実行結果

実行結果を見ると,PKCS#12ファイルがデコードされて,証明書を取り出すことができていることが分かります。

FriendlyName: My Certificate
Certificate: -----BEGIN CERTIFICATE-----
MIIEETCCAvmgAwIBAgIJAMOwrMuZm9jcMA0GCSqGSIb3DQEBCwUAMH0xCzAJBgNV
BAYTAkpQMQ4wDAYDVQQIDAVUb2t5bzEXMBUGA1UECgwOVHJ1c3RlZCBEZXNpZ24x
DTALBgNVBAsMBG15Q0ExDTALBgNVBAMMBG15Q0ExJzAlBgkqhkiG9w0BCQEWGGFk
bWluQHRydXN0ZWQtZGVzaWduLm5ldDAeFw0xNjA0MDMyMDQ1MzNaFw0xNzA0MDMy
MDQ1MzNaMIGVMQswCQYDVQQGEwJKUDEOMAwGA1UECAwFVG9reW8xEDAOBgNVBAcM
B0Vkb2dhd2ExFzAVBgNVBAoMDlRydXN0ZWQgRGVzaWduMRIwEAYDVQQLDAlDZXJ0
VXNlcnMxDjAMBgNVBAMMBXVzZXIyMScwJQYJKoZIhvcNAQkBFhh1c2VyMkB0cnVz
dGVkLWRlc2lnbi5uZXQwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDU
0+1E3pHGhCAHl2rWFKlC/QTFUnuxANx8tDzBEKkQNJLXTpEIjNbk3h0BAFBZuMhv
cLRM62L0nJffUZgk2KRs1/SG01nZZCWBsLD9zkKy/bGm3+CoxdGPt72kI8AZuhwD
SAOfYKXl9eTzPUMmK4KoVulZsOO/7bo5q+VEC1u2tCStqyqE4sIl8heM2+ILDyod
Dyc+6zTSE7KBYQG5eK9HS7Sk6FbVIbtufCrTVf1i5TrvNEVZUOLU7D6qyJgazLNu
lnadsatvAQdLw83Sr42P15DEJqj64iqTbIHDRTZ51Fu5L6MKHmxEj7ghj7QrEFNV
e6Roa/j4IyfYIuQHgRqvAgMBAAGjezB5MAkGA1UdEwQCMAAwLAYJYIZIAYb4QgEN
BB8WHU9wZW5TU0wgR2VuZXJhdGVkIENlcnRpZmljYXRlMB0GA1UdDgQWBBR8JlVM
MvPkAZMjsWhFCfso4x7ZljAfBgNVHSMEGDAWgBTQWWWXkIzaouxfeZRMr16U+8Gy
IzANBgkqhkiG9w0BAQsFAAOCAQEAOZyBboiK154gYVuZBzm495SXWfy1qx0soRGE
DaKbj8bKZYFjtw9UnKiCCqBMGR/pdYAl/qxzJj/+VlN8ZqM9bw9fyZ17l5iw3sgz
H/cY0MrveVrysOCIvDBf2+JfElX4xTPfx1gUWOJifakdie9nrcukbsTYKidBoUSq
0Vo4veEMMSIQLIhv7+YNHG8Sj5oRYaO6RHnkTe9vfP5n0l6PvOWiK8RffG3rBtuz
gjko/y1oyo9unji1aycAG652On0DXKK/5YdOQjd+uOrIbUlvW1cFLfGYmehBmqBN
Y+moe6vvbFb+4DNvtLPlX6H9cL6rNr1VU6aMjGX7gjyLy6bt8g==
-----END CERTIFICATE-----

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です