熟悉 OpenSSL 的操作後,製作 Test CVC 就很簡單了, 只要照著 spec 把值填進去就可以了
先紀錄最簡單的方法, 使用 DOCSIS 提供的 test root cert/key 製作 test cvc
第一步
去CableLabs下載TEST DOCSIS 3.0 or Earlier Certificate Steps (Legacy PKI)第二步
解壓縮, 按照 TEST_DOCSIS_MFR_CVC_STEPS.txt 的步驟,改一下 config, 打打指令就完成了第零步
根據 CM-SP-SECv3.0-I13-100611.pdf 的 III.1.7 Code Verification Certificate Format, 編寫 config file, 製作 CVC
X.509 Certificate Field Description Certificate { tbsCertificate version v3(2) serialNumber Integer, size (1..20) octets signature SHA-1 with RSA, null parameters issuer countryName US organizationName Data Over Cable Service Interface Specifications organizationalUnitName Cable Modems commonName DOCSIS Cable Modem Root Certificate Authority validity notBefore utcTime (GMT), YYMMDDhhmmssZ notAfter utcTime (GMT), YYMMDDhhmmssZ subject countryName <country of subject company> organizationName <subject code-signing agent> organizationalUnitName DOCSIS commonName Code Verification Certificate subjectPublicKeyInfo algorithm RSA encryption, null parameters subjectPublicKey 1024-bit, 1536-bit, or 2048-bit modulus extensions extKeyUsage critical true keypurposeId id-kp-codeSigning signatureAlgorithm SHA-1 with RSA, null parameters signature Value } end certificate
根據這個表格,就能了解 TEST_DOCSIS_MFR_CVC_STEPS.txt 裡的步驟為什麼要這麼做了
- 產生 private key + CSR 編輯 csr_config.txt
- 簽發憑證 編輯 extension 設定檔 ext.txt
[ req ] default_keyfile = TEST_DOCSIS_MFR_CVC_PRIVATEKEY.pem default_md = sha1 prompt = no distinguished_name = req_DN string_mask = nombstr # spec 裡有提到.issuer, subject 要用的編碼方式, 沒什麼特殊字元的話用 default 即可 # The T.61/TeletexString type is used if the character string contains characters not in the PrintableString set. # Certificate Distinguished Name [req_DN] C = <2 Digit Country Code> O = <Company Name> # 這個值要和 modem 的 organizationName 一樣, 這是 CVC 檢驗的一個步驟 OU = DOCSIS CN = TEST Code Verification Certificate然後就能用以下指令製作 key + CSR 了
openssl req -newkey rsa:2048 -config csr_config.txt -out csr.pem -nodes
extendedKeyUsage=critical,codeSigning搭配 DOCSIS 的 Test Root CA Cert/Key, 再用以下指令簽發即可
openssl x509 -req -days 3653 -in csr.pem -CA TEST_DOCSIS_CABLE_MODEM_ROOT_CA.PEM \ -CAkey TEST_DOCSIS_CABLE_MODEM_ROOT_CA_PrivateKey.PEM -CAcreateserial \ -extfile ext.txt -sha1 -out TEST_DOCSIS_MFR_CVC.crt
做完 CVC 後, 把 Test DOCSIS Root CA public key 塞到 modem, CVC 拿去 sign image, 就可以測 CVC upgrade了
Thanks Jimmy, this is just what I was trying to find.
回覆刪除