2015-11-30 634 views
0

甲證書是使用下面的OpenSSL命令生成:OpenSSL的命令包括 「basicConstraints」 擴展

openssl req -new -x509 -keyout server.key.pem -out server.crt.pem -config /etc/ssl/openssl.cnf -extensions cust_const 

相應的CSR使用命令生成:

openssl x509 -x509toreq -in server.crt.pem -signkey server.key.pem -out server.csr -extensions cust_const 

conf文件(OpenSSL的。 cnf)有下面提到的條目。

[ cust_const ] 

basicConstraints  = CA:FALSE 

問題是生成的CSR不包括basicConstraints擴展名。

如果我們已經有basicConstraints的證書,basicConstraints如何納入CSR?

+0

'x509 -x509toreq'使用'X509_to_X509_REQ'這個非常基本的例程,它只設置版本,主題和pubkeyinfo。你爲什麼生成一個虛擬證書*然後*一個CSR?如果你想使用虛擬證書,你不需要CSR,如果你想用CSR來獲得(也許是真實的)證書,你不需要虛擬證書。沒有*'-x509'的'req -new' *可以生成一個包含擴展名的CSR(命令行中的'-reqexts'或configfile中的'req_extensions') - 儘管CA通常不會將CSR的擴展名放在cert中。 –

+0

在我們的實施中,我們希望首先生成證書,然後生成CSR。證書中包含「basicConstraints」擴展,但不包含在CSR中。有沒有辦法從證書中獲得CSR的擴展? – user1334227

+0

你'想'做到這一點,但沒有理由爲什麼,我看不出任何有用的理由。如果你堅持要做一些無用的事情,你可以使用你在證書中放入的相同數據來生成CSR(但實際上並沒有從證書中拿到證書),或者如果你堅持要從證書中拿到證書,你必須寫一個程序來做:所有需要的'PEM_ *'例程和一些'X509_ *'和'X509_REQ_ *'都有手冊頁;缺失的通常遵循相同的模式,並且在'.h'文件中都有C級細節。 –

回答

0

當你想創建一個由其他CA簽名的CSR時,他會「讓」你的CA(例如,root會將中間值標記爲CA,depthLen = 1,中間值將把endPoint標記爲CA = FALSE .. 。)

首先你需要了解你想做的事(根/中間/端點)

如果是root創建擴展文件(尋找OpenSSL的默認幫助...)

什麼在短列表命令下面幫助您開始:

create root ca certificate 
    openssl genrsa -des3 -out rootca.key 2048 
    openssl rsa -in rootca.key -out rootca.key.insecure 
    openssl req -key rootca.key.insecure -new -x509 -days 3650 -extensions v3_ca -out rootca.crt 
    openssl x509 -text -in rootca.crt 
    NOTE: 
     it uses the default extensions file: /usr/lib/ssl/openssl.cnf (or /etc/ssl/openssl.cnf) 
create intermediate certificate 
    openssl genrsa -des3 -out intermediate.key 2048 
    openssl rsa -in intermediate.key -out intermediate.key.insecure 
    openssl req -new -key intermediate.key.insecure -out intermediate.csr 
     NOTE: you might need these commands before the next command 'openssl ca'. 
      mkdir demoCA 
      touch demoCA/index.txt 
      echo 1122334455667788 > demoCA/serial 
    openssl ca -extensions v3_ca -days 3650 -outdir . -batch -cert rootca.crt -keyfile rootca.key.insecure -in intermediate.csr -out intermediate.crt 
     NOTE: after run 'openssl ca' you can remove the demoCA folder 
      rm -rf demoCA 
    openssl x509 -text -in intermediate.crt 
    openssl verify -CAfile rootca.crt intermediate.crt 
create server/client certificate 
    openssl genrsa -des3 -out server.key 2048 
    openssl rsa -in server.key -out server.key.insecure 
    openssl req -new -key server.key.insecure -out server.csr 
    openssl x509 -req -days 3650 -CAcreateserial -CA intermediate.crt -CAkey intermediate.key.insecure -in server.csr -out server.crt 
    openssl x509 -text -in server.crt