這部份的 spec 在 PKT-SP-SEC1.5-I03-090624 的 8 PACKETCABLE CERTIFICATES
在 PacketCable 裡有2組 certificate
MTA
MTA Root -> MTA Manufacturer -> MTA
Service Provider
Service Provider Root -> Service Provider CA -> Local System Operator CA -> KDC
這次要玩的是 KDC 這一張 certificate, 所以只要拿 Local System Operator CA 重新簽發 KDC 就可以了
先從 Cablelabs 下載 Test PacketCable CableLabs Service Provider PKI CA Certs
把 Test_Shared_LSCA 的 private key 解出來, 密碼是 secret再重新製作 KDC 的 CSR, 把 CSR 用 Test_Shared_LSCA.pem sign過就可以了
製作前先看 spec 對 KDC 這著 certificate 各欄位的規範
Key Distribution Center Certificate | |
---|---|
Subject Name Form | C=<Country> O=<Company> [OU=<Local System Name>] OU= CableLabs Key Distribution Center CN=<DNS Name> |
Signed By | Service Provider CA Certificate or Local System Certificate |
Validity Period | 20 years. |
Modulus Length | 1024, 1536 or 2048 |
Extensions | keyUsage[c,o](digitalSignature) authorityKeyIdentifier[n,m](keyIdentifier=<subjectKeyIdentifier value from CA certificate>) subjectAltName[n,m](See draft-ietf-cat-kerberos-pk-init-16.txt) |
Subject Name:
C,O,OU,CN, 這4個值根據測試環境調整, 第一個 OU=Local System Name可以省略,第二個 OU= CableLabs Key Distribution Center 為固定值
Extensions:
c:critical, n:non-critical; m:mandatory, o:optional
keyUsage可以省略,但有加的話要標示為c:critical
authorityKeyIdentifier 和 subjectAltName 一定要有, subjectAltName 的格式比較複雜( draft-ietf-cat-kerberos-pk-init-16.txt -> 3.2.2.2. Kerberos Names in Certificates)
subjectAltName 的內容是 KDC 的 Realm 和 principal name
看完規則後就可以用 openssl 來製作 certificate 了
參考 MIT Kerberos Documentation 的步驟修成符合 PacketCable 的格式
1. 產生 KDC key, 若要沿用舊的可以跳過, 如果本的 key 不是 pem 格式可以先轉一下會比較方便, openssl 預設是吃 pem 格式
2.用 kdckey.pem 產生CSR
先製作openssl.conf
[req] default_md = sha1 prompt = no distinguished_name = req_DN string_mask = default # 設定字串編碼方式,spec 是說 If a string cannot be encoded as a PrintableString it MUST be encoded as a UTF8String (tag [UNIVERSAL12]). # default 會先用 PrintableString 編碼,若 SubjectName 和 IssuerName 沒什麼特殊字元設 default 就可以了 [ req_DN ] # 這邊根據測試環境填上對應的值,如果是要把舊的 kdc certificate 重 sign,就打開 certificate 照抄就可以了 C= TW O= ABCDE 1.OU= Shared-01 CableLabs Local System CA 2.OU= CableLabs Key Distribution Center CN= kdc.test.com #============================================== # 以下為 sign certificate 時要加入的 extension欄位 # 比較複雜的是subjectAltName,詳細語法說明在 https://www.openssl.org/docs/crypto/ASN1_generate_nconf.html # [kdc_cert] keyUsage=critical,digitalSignature authorityKeyIdentifier=keyid,issuer subjectAltName=otherName:1.3.6.1.5.2.2;SEQUENCE:kdc_princ_name [kdc_princ_name] realm=EXP:0,GeneralString:REALM.COM principal_name=EXP:1,SEQUENCE:kdc_principal_seq [kdc_principal_seq] name_type=EXP:0,INTEGER:1 name_string=EXP:1,SEQUENCE:kdc_principals [kdc_principals] princ1=GeneralString:krbtgt princ2=GeneralString:REALM.COM
用 req 指令產生CSR
再用 x509 指令 sign CSR, 演匴法是 sha1WithRSAEncryption
最後再把 kdckey.pem kdc.pem 轉成 KDC 程式需要的格式就可以了
比較常見的就 der 格式, private 又有分 pkcs1/pkcs8
沒有留言:
張貼留言