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"。