openssl rsa/pkey

openssl系列文章:http://www.cnblogs.com/f-ck-need-u/p/7048359.htmlhtml


openssl rsa和openssl pkey分別是RSA密鑰的處理工具和通用非對稱密鑰處理工具,它們用法基本一致,因此只舉例說明openssl rsa。ide

它們的用法很簡單,基本上就是輸入和輸出私鑰或公鑰的做用。工具

openssl rsa [-in filename] [-passin arg] [-passout arg] [-out filename] [-des|-des3|-idea] [-text] [-noout] [-pubin] [-pubout] [-check]
openssl pkey [-passin arg] [-passout arg] [-in filename] [-out filename] [-cipher] [-text] [-noout] [-pubin] [-pubout]
 
【openssl rsa選項說明:】
-in filename :指定密鑰輸入文件。默認讀取的是私鑰,若指定"-pubin"選項將表示讀取公鑰。將從該文件讀取密鑰,不指定時將從stdin讀取。
-out filename:指定密鑰輸出文件。默認輸出私鑰,若指定"-pubin""-pubout"選項都將輸出公鑰。不指定將輸出到stdout。
-pubin:指定該選項時,將顯式代表從"-in filename"的filename中讀取公鑰,因此filename必須爲公鑰文件。
      :不指定該選項時,默認是從filename中讀取私鑰。公鑰文件能夠經過文件中的公鑰標識符
      :"-----BEGIN PUBLIC KEY-----""-----END PUBLIC KEY-----"來辨別。
-pubout:指定該選項時,將顯示代表從"-in filename"的filename中提取公鑰並輸出,因此filename文件必須是私鑰文件。
       :不指定該選項時,默認輸出私鑰。當設置了"-pubin"時,默認也設置了"-pubout"。
       :私鑰文件能夠經過文件中的私鑰標識符"-----BEGIN PRIVATE KEY-----""-----END PRIVATE KEY-----"來辨別。
-noout :控制不輸出任何密鑰信息。
-text  :轉換輸入和輸出的密鑰文件格式爲純文本格式。
-check :檢查RSA密鑰是否完整未被修改過,只能檢測私鑰,由於公鑰來源於私鑰。所以選項-"in filename"的filename文件只能是私鑰文件。
-des|-des3|-idea:加密輸出文件,使得每次讀取輸出文件時都須要提供密碼。
-passin arg :傳遞解密密鑰文件的密碼。密碼格式見openssl密碼格式
-passout arg:指定加密輸出文件的密碼。
【openssl pkey選項說明:】
-cipher:等價於openssl rsa的"-des|-des3|-idea",例如"-cipher des3"

例如:加密

(1).建立一個rsa私鑰文件genrsa.pri,而後從中提取rsa公鑰到rsa.pub文件中。idea

[root@xuexi tmp]# openssl genrsa -out genrsa.pri

[root@xuexi tmp]# openssl rsa -in genrsa.pri -pubout -out rsa.pub

[root@xuexi tmp]# cat rsa.pub
-----BEGIN PUBLIC KEY-----
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCxitfLsvV58ogZr4hwdsEp7Mne
hShLasCZsE10jGxQLsxoJ7FSBsrnZPB4GBSuwEEXazZdo7547QdLxe9vVL3+YSu3
kPkd30tCTjf2HVywvj3ou2zgEdAIQTfQ0sODV6daO1bKZJxT1fIonEGuIQaefkqR
TxTQOxLIcfR0gayvgQIDAQAB
-----END PUBLIC KEY-----

(2).建立一個加密的rsa私鑰文件genrsaK.pri,而後今後文件輸出公鑰至文件rsaK.pub。spa

[root@xuexi tmp]# openssl genrsa -out genrsaK.pri -des3 -passout pass:123456

此時將提示輸入密碼才能讀取該私鑰文件。code

[root@xuexi tmp]# openssl rsa -in genrsaK.pri -pubout -out rsaK.pub
Enter pass phrase for genrsaK.pri:

能夠使用"-passin"傳遞解密的密碼。htm

[root@xuexi tmp]# openssl rsa -in genrsaK.pri -pubout -out rsaK.pub -passin pass:123456

(3).移除私鑰文件或公鑰文件的密碼。只需直接輸出到新文件便可。以已加密的私鑰文件genrsaK.pri爲例。blog

[root@xuexi tmp]# openssl rsa -in genrsaK.pri -out genrsaNK.pri

(4).check檢測私鑰文件的一致性,查看私鑰文件被修改過。ip

[root@xuexi tmp]# openssl rsa -in genrsaK.pri -check
Enter pass phrase for genrsaK.pri:
RSA key ok
writing RSA key
-----BEGIN RSA PRIVATE KEY-----
MIICXAIBAAKBgQDAXX2ZwqCtcJXiR9xr7lJhslBybeAo07Q1jYK9IT0atbj72jj+
3Eh5vbAjF0R5GF+luTBpGdhTVlt774oj+5m6zvkx785YpW9gRGroN9eglgvUu8iA
9nY30ulIOTEmpi/TfSBVIBL+XbqZ2pLtr05t59RsLkBcqD7huLq28TODTwIDAQAB
AoGALHWvMNl933g0/B6VwFBNtAzNcRUaCPWdIf955xKGl+TGQ1dVcvoguhpwWjvn
dIGAocHigXgaunAsJsHfUJ+3EMJn7SeI25NDraSRdgH6XFK7yKg3ed5Oh4zLmZEx
kEzh91jBkAwwM29/Vv0kbBiV6ZHH/zOxqkCylEaREQou4VECQQDjK6CrYtak+LR+
LbALGSCWeugMU3h2vweNDmTBVwhbHJXe0inCxrBgK9AXSMstnfmcwH1GR/b1Hzdj
U7TnImxpAkEA2McaDnRprd0pExHKeslyX93M/vUXRikr7H8pFke2lLmx8/HGVZHx
erJj8V8sLIIGRc/j0wPoY6hpf67YEeBa9wJBANEPHVWcKBy6JKDaOuB7x1m00khF
qN7e/nv5ew/SoIX40JO2pWfyoe5fY6mJ/DGG6GgxXRiIseTzTW3DYwAy1cECQFGz
WIKyJVI91Ek3n1R/r/eppKVCwi7TPZa4pkebZ5jOE9+Y8+M0SgqwSTKjaAauSqbt
HzRceK12v6w7vXufTykCQDoejWxVGsaxOW8H5D0+8dcF0JVW5hWljcBuvDd0aEJ0
R4tGO1twXzO1dWBbIFJHHIot6W+V1g5CxVPS4QSsdXU=
-----END RSA PRIVATE KEY-----

如今隨便修改下私鑰文件,再檢測。

[root@xuexi tmp]# openssl rsa -in genrsaK.pri -check
unable to load Private Key
139890935146400:error:0906D066:PEM routines:PEM_read_bio:bad end line:pem_lib.c:802:

通常來講,openssl rsa的經常使用選項就只有"-in filename"、"-out filename"、"-pubout"。

相關文章
相關標籤/搜索