RSA 金鑰容器 webconfig 加密解密

2021-09-24 22:29:15 字數 3849 閱讀 4370

若要建立 rsa 金鑰容器

請使用 asp.net iis 註冊工具 (aspnet_regiis.exe) 及–pc開關。必須為金鑰容器指定乙個名稱,該名稱標識應用程式的 web.config 檔案的configprotecteddata節中指定的rsaprotectedconfigurationprovider所使用的金鑰容器。為確保可以匯出新建立的 rsa 金鑰容器,必須包括-exp選項。

例如,下面的命令建立乙個名為 samplekeys 的 rsa 金鑰容器,該容器是可匯出的計算機級金鑰容器。

aspnet_regiis 

-pc 

"samplekeys

"–exp 

下面的示例演示了 web.config 檔案的configprotecteddata節。該節指定使用名為 samplekeys 的計算機級 rsa 金鑰容器的rsaprotectedconfigurationprovider

<

configprotecteddata

>

<

providers

>

<

add 

name

="sampleprovider"

type

="system.configuration.rsaprotectedconfigurationprovider, system.configuration, version=2.0.0.0,

culture=neutral, publickeytoken=b03f5f7f11d50a3a

processorarchitecture=msil"

keycontainername

="samplekeys"

usemachinecontainer

="true"

/>

providers

>

configprotecteddata

>

為了防止無意刪除受保護的配置節的加密和解密金鑰,解除安裝 .net framework 時不會刪除 rsa 金鑰容器。

授予對 rsa 金鑰容器的訪問許可權

預設情況下,rsa 金鑰容器受到所在伺服器上的 ntfs 訪問控制列表 (acl) 的嚴密保護。這樣能夠限制可以訪問加密金鑰的人員,從而增強加密資訊的安全性。

必須首先向 asp.net 應用程式的程序標識授予對該 rsa 金鑰容器的讀取訪問許可權,然後 asp.net 才能使用 rsa 金鑰容器。有關設定和確定 asp.net 應用程式標識的資訊,

可以使用 aspnet_regiis.exe 工具及-pa開關,向 asp.net 應用程式的標識授予讀取 rsa 金鑰容器的許可權。例如,下面的命令向 windows server 2003 network service 帳戶授予對名為 samplekeys 的計算機級 rsa 金鑰容器的讀取訪問許可權:

aspnet_regiis 

-pa 

"samplekeys""

nt authority\network service"

如果 rsa 金鑰容器是使用者級容器,必須以其 windows 配置檔案儲存了金鑰的使用者的身份登入,並且必須包括-pku選項以授予對該使用者級 rsa 金鑰容器的訪問許可權。

若要使用計算機配置中指定的預設rsaprotectedconfigurationprovider,必須首先向應用程式的 windows 標識授予對名為

netframeworkconfigurationkey 的計算機金鑰容器的訪問許可權,該計算機金鑰容器是為該預設提供程式指定的金鑰容器。例如,下面的命令向 network service 帳戶授予對預設rsaprotectedconfigurationprovider所使用的 rsa 金鑰容器的訪問許可權。

aspnet_regiis 

-pa 

"netframeworkconfigurationkey""

nt authority\network service

"

netframeworkconfigurationkey rsa 金鑰容器是 aspnet_regiis.exe 工具所發出的命令的預設金鑰容器。因此上述命令也可以按以下方式發出:

aspnet_regiis 

-pa 

"nt authority\network service

"

若要將 rsa 金鑰容器匯出到 xml 檔案,可以使用 aspnet_regiis.exe 工具及–px開關。xml 檔案可以用作 rsa 金鑰容器的備份,也可用於在其他伺服器上匯入 rsa 金鑰容器。若要對加密資訊進行解密,rsa 金鑰容器的私鑰部分是必需的。若要在另一台伺服器上使用匯出的金鑰容器,還需匯入私鑰。通過在匯出金鑰時指定–pri選項,可以在 xml 檔案中包括私鑰。還必須指定匯出的金鑰容器是計算機級還是使用者級的。若要匯出使用者級金鑰容器,必須以其 windows 配置檔案儲存了金鑰的使用者的身份登入。若要指定使用者級金鑰,請在匯出加密金鑰資訊時包括-pku選項;否則,匯出的金鑰將來自計算機金鑰儲存區。

例如,下面的命令將名為 samplekeys 的計算機級 rsa 金鑰容器匯出到名為 keys.xml 的檔案中幷包括了私鑰資訊。

aspnet_regiis 

-px 

"samplekeys

"keys.xml 

-pri

出於安全原因,在將 rsa 金鑰容器匯出到某個 xml 檔案之後,請將該 xml 檔案複製到伺服器外部的乙個位置並將該 xml 檔案從伺服器中刪除。這樣能夠減少攻擊者訪問到您的 rsa 金鑰容器的機會,因而可降低攻擊者對使用該 rsa 金鑰容器加密的 web.config 檔案進行解密的能力。

匯入 rsa 金鑰容器

可以使用 aspnet_regiis.exe 工具和–pi開關,從 xml 檔案匯入 rsa 金鑰容器。還必須指定匯入的金鑰容器是計算機級還是使用者級的金鑰容器。若要匯入使用者級金鑰容器,必須以將在其 windows 配置檔案中儲存金鑰的使用者的身份登入。若要指定使用者級金鑰,請在匯入加密金鑰資訊時包括-pku選項;否則,匯出的金鑰將匯入到計算機金鑰儲存區中。

例如,下面的命令從名為 keys.xml 的檔案中匯入名為 samplekeys 的計算機級 rsa 金鑰容器:

aspnet_regiis 

-pi 

"samplekeys

"keys.xml

必須向將使用所匯入 rsa 金鑰容器的 asp.net 應用程式的標識授予對該 rsa 金鑰容器內容的讀取許可權。

若要刪除 rsa 金鑰容器,可以使用 aspnet_regiis.exe 工具和–pz開關。在刪除 rsa 金鑰容器之前,請確保已經將金鑰匯出到 xml 檔案中以便能夠在以後匯入,或者確保不需要解密任何用 rsa 金鑰容器加密的資訊。

在刪除某個 rsa 金鑰容器時,必須指定該金鑰容器的名稱,並將該容器標識為計算機級或使用者級。若要刪除使用者級金鑰容器,必須以其 windows 配置檔案儲存了金鑰的使用者的身份登入。

例如,下面的命令刪除名為 samplekeys 的計算機級 rsa 金鑰容器。

aspnet_regiis 

-pz 

"samplekeys

"

生成RSA金鑰對

著名的rsa演算法,它通常是先生成一對rsa 金鑰,其中之一是保密金鑰,由使用者儲存 另乙個為公開金鑰,可對外公開,甚至可在網路伺服器中註冊。為提高保密強度,rsa金鑰至少為500位長,一般推薦使用1024位。這就使加密的計算量很大。rsa加密演算法的用處非常廣,比如支付寶的公開api與商戶對接使用...

匯入和匯出受保護的配置 RSA 金鑰容器

受保護的配置提供了在使用 rsaprotectedconfigurationprovider 時建立 刪除 匯出和匯入 rsa 金鑰容器的能力。對於將同乙個經過加密的 web.config 檔案部署到數台伺服器上的網路場,這會非常有用。在這種情況下,還必須將相同的 rsa 金鑰容器部署到這些伺服器上...

RSA金鑰生成與使用

rsa金鑰生成與使用 1.開啟openssl金鑰生成軟體 開啟 openssl 資料夾下的 bin 資料夾,執行 openssl.exe 檔案,如下圖 2.生成rsa私鑰 輸入 genrsa out rsa private key.pem 1024 命令,回車後,在當前 bin 檔案目 錄中會新增乙...