2013-03-06 79 views
3

我需要製作輕量級的PKC,因爲我想從用戶證書中刪除x509 v3擴展。我可以使用這個openssl命令來刪除v3擴展嗎?從發佈的證書中刪除x.509 v3擴展

openssl x509 -in /usr/local/openca/var/openca/crypto/certs/E841B2655206FA6A3ADA.pem -noout -text -certopt no_extensions -out/usr/local/openca/var/openca/crypto/certs/-out E841B2655206FA6A3ADA_nov3ext.pem

或者我應該在哪裏更改生成x509 v1證書,因爲它不包含x509擴展。你能否給我提供一個參考鏈接。

感謝您的時間。

+4

您知道擴展名是證書的簽名部分,對不對?因此,通過刪除它們,證書的證書鏈將不再驗證。此外,即使刪除了擴展名,如果存在唯一標識符,證書可能必須至少爲版本v2。 – mkl 2013-03-06 05:19:41

回答

1

通常(實際上,總是真的!)簽名不僅僅包括證書上的可分辨名稱;但其他一切(連載,失效日期等)。

因此,雖然不難削減證書大小 - 它會立即使發行人的簽名無效。

但是 - 在某些情況下,可以做其他事情 - 這是完全分配/忽略證書的簽名部分;只關注公鑰。

cat somecert.pem | openssl x509 -pubkey -nout 

使用成纔得到公正的公共密鑰。因此,放棄所有的X509和本質上不再有PKI。只需配對原始公鑰和私鑰。

然後在你的應用程序中提交發明你自己的密碼的相當不可原諒的失敗 - 並讓該公共密鑰的所有者用它的私鑰標記類似NONCE的東西;並驗證簽名。例如。

# the 'server' sends a nonce to the client 
openssl rand -base64 128 > send-to-client 

然後在客戶端上,上面籤

貓MSG-從服務器| openssl pkeyutl -inkey privkey.pem -sign | BASE64>發送到服務器的

,並在服務器上,我們檢查這個

cat msg-from-client | openssl pkeyutl -in pubkey-of-client.pem -verify 

和拿東西在那裏形成。然而,除非你是一個狡猾的密碼學家和協議設計師,否則這樣的方案(以及當然確實是這樣!)充滿了缺陷和陷阱。

但理論上它只允許使用幾個1000字節的RSA密鑰;或者幾個100字節的基於橢圓曲線的密鑰。