2009/07/31

PKI Research #2 - 憑證製作

拿舊電腦安裝 OpenCA (on CentOS 5.3) 安裝失敗,無法啟動。看到 Fedora 有自己寫的 Dogtag 憑證系統,不知道有沒有用,這方面先交給別人實驗。

我們要 PKI 的目的是要使用產生的公私鑰對來驗證使用者身分,但是發憑證很簡單 (OpenSSL 就可以簽 X.509 了),但要集中管理使用者金鑰卻很困難,不得不架設 CA 一類的東西,尤其是憑證廢止清冊,這一定要中央集權式管理才可以。OpenSSL 簽憑證並沒有辦法考慮到廢止的問題吧 (頂多自動過期,離職等無法強制廢止) 所以似乎還是要 CA 中央管理憑證。

我提過我已經可以自行簽發憑證了 (見此 OpenSSL 教學),跟教授借來的那本也有提到 Bouncy Castle 這個 Java 函式庫可以簽發,但是重點的憑證管理卻隻字未提。還有簽完的 RSA Private Key 檔、憑證申請書和簽發憑證檔都是特定格式,要直接抽出公私鑰對存在 RFID Tag 太難了,我想許多程式設計都是直接將憑證檔案丟去處理的吧。

以下為絕對沒用過的 RSA Private Key 檔範例:
-----BEGIN RSA PRIVATE KEY-----
MIIBOQIBAAJBAOWeK9TSYVnPEkmK45TeI7NrC8MzvwabSVg1aEuTmcNkLRg/Qibv
B6ST5F056HCk0xvzm5rfO5A+q+4ncBMGMhkCAwEAAQJABGaLoICHrRjy2MX4ppm7
RWz/xLXxK0c+mJotbYVepQf1KYB6kPc4df1t4KrFFgxMyXzdJ/eiegf4j3HFT4Hs
gQIhAPiVVZNSMqp1uUx7OXB3GGW+3uslvA3+NvuAKqVguIo9AiEA7Hf6ykGeuRBN
k2EN+J+Vof4ryzFOtJGH+eyycmKPsQ0CIFJYteZ9nkcVhHKvh1GYQj7CQfpHn8pK
4k/iHz51kexJAiBwKs1kiVHv+QLDSQNmjtRcngNKBB6QWoQEkjlnNsdwNQIgbJYa
Ft4zOc8TnbXnGxXRfGVG0RZfXmxcQNv2yX2G4Vc=
-----END RSA PRIVATE KEY-----

你能看出這個檔案內的私鑰組成是什麼嗎?

openssl rsa -in 1.key -text
可看出私鑰的各組成資訊。

PEM 內文經過 BASE64 解碼後的 DER 編碼有 317 bytes,一個 Tag Block 有 16bytes,也要約 20 格。

-----BEGIN CERTIFICATE REQUEST-----
MIIBGzCBxgIBADBhMQswCQYDVQQGEwJUVzEPMA0GA1UECBMGVGFpd2FuMQ8wDQYD
VQQHEwZUYWl3YW4xHDAaBgNVBAoTE05DSFUgTUlTIERlcGFydG1lbnQxEjAQBgNV
BAMTCXNvdWx0YWtlcjBcMA0GCSqGSIb3DQEBAQUAA0sAMEgCQQDlnivU0mFZzxJJ
iuOU3iOzawvDM78Gm0lYNWhLk5nDZC0YP0Im7wekk+RdOehwpNMb85ua3zuQPqvu
J3ATBjIZAgMBAAGgADANBgkqhkiG9w0BAQUFAANBANOz3JapX/SSbdTCaQiriALm
ZlMeGW+L3XWnj4H7kXVljqsyYv6JJEAnQzdBcw1MiUZDYZqFOYJHxmx56eSIx8o=
-----END CERTIFICATE REQUEST-----

要求憑證簽發的申請檔,內含有國家、組織、姓名等個人資訊,你看得出來嗎?
-----BEGIN CERTIFICATE-----
MIIBtDCCAV4CCQChpB3R8j5vwDANBgkqhkiG9w0BAQUFADBhMQswCQYDVQQGEwJU
VzEPMA0GA1UECBMGVGFpd2FuMQ8wDQYDVQQHEwZUYWl3YW4xHDAaBgNVBAoTE05D
SFUgTUlTIERlcGFydG1lbnQxEjAQBgNVBAMTCXNvdWx0YWtlcjAeFw0wOTA3MzEw
NDE1MDJaFw0xMDA3MzEwNDE1MDJaMGExCzAJBgNVBAYTAlRXMQ8wDQYDVQQIEwZU
YWl3YW4xDzANBgNVBAcTBlRhaXdhbjEcMBoGA1UEChMTTkNIVSBNSVMgRGVwYXJ0
bWVudDESMBAGA1UEAxMJc291bHRha2VyMFwwDQYJKoZIhvcNAQEBBQADSwAwSAJB
AOWeK9TSYVnPEkmK45TeI7NrC8MzvwabSVg1aEuTmcNkLRg/QibvB6ST5F056HCk
0xvzm5rfO5A+q+4ncBMGMhkCAwEAATANBgkqhkiG9w0BAQUFAANBAGQhB8VKtY2N
hecmukSUmJkTzFWwT15fPmTGzf0KdrccNCSK2bE/u6bTW9dkUF12MkTaHNVytmKd
u7MoPuNvCnA=
-----END CERTIFICATE-----

crt 已簽署憑證內容。這張憑證是自我簽署的,沒什麼效用。

openssl x509 -in 1.crt -noout -modulus
輸出公鑰係數。

OpenSSL 參考資料:
http://www.ascc.sinica.edu.tw/nl/91/1819/02.txt
http://setnet.com.tw/ftp/%BA%FB%AD%D7%A7%DE%B3N%BB%A1%A9%FA/Linux/%C3%B1%B5o%BE%CC%B5%FD.txt
http://csc.ocean-pioneer.com/docum/ssl_basic.html

沒有留言:

張貼留言