2015-11-25 82 views
0

我想解析.csr文件以檢索通用名稱(CN)值。如何解析加密的.csr文件並將信息複製到txt文件中的特定位置

我有以下結構的CSR文件:

verify OK 
Certificate Request: 
Data: 
    Version: 0(0x0) 
    Subject: C=XX, ST=SSSSSSS, L=SSSSSS, O=CORPORATION X.X, OUT=XX, CN=IAM.YOUARE.COM 
    ..... 

我想檢索CN值(在上面的「IAM.YOUARE.COM」的例子)

曾經有這個值,我想將它插入到DNS.X域旁邊的.txt文件中(請注意,尊重相等運算符和插入值之間的空白是很重要的)。下面.TXT領域的結構如下所示:

[xxxxx] 
basicConstraints = CA:FALSE^M 
extendedkeyUsage = serverAuth 
subjectAltNAme = @alt_names 

[alt_name] 
DNS.X = IAM.YOUARE.COM 

到現在爲止,我一直在使用的命令爲「OpenSSL REQ -text - noout -verify -in XXX.csr」訪問CSR文件和複製手動設置CN值。然而,我現在有一個龐大的.csr文件列表來「解析」,我想知道您是否可以給我一些關於如何自動執行此過程的指示。

回答

1

假設使用PHP將是一種選擇(而很明顯,一個可以用PHP創建的網站,它也許少爲人知的是PHP腳本,也可以在命令行中運行,如shell腳本,但用。

// Load and decode the csr file 
$csrfiledata=file_get_contents("/path/to/file.csr"); 
$csr = openssl_csr_get_subject($csrfiledata); 
// openssl_csr_get_subject('file://path/to/file.csr') also works 
// if the file was read properly, $csr['CN'] will contain the value of CN 

然後,假設你創建了一個名爲template.txt模板包含

[alt_name] 
DNS.X = $$CN$$ 

其中$$CN$$是對CN值中隨機選擇的佔位符。這是現在很容易替代值讀取˚F黑山CSR文件,並將結果寫入文件:用PHP是

$path_to_infile = 'template.txt'; 
$path_to_outfile = 'outfile.txt'; 
$file_contents = file_get_contents($path_to_infile); 
$file_contents = str_replace('$$CN$$',$csr['CN'],$file_contents); 
file_put_contents($path_to_outfile,$file_contents); 

如何遍歷文件解釋here

相關問題