Identityserver4配置證書


IS4中如果token的類型是JWT,則需要使用RS256算法生成非對稱簽名,這意味着必須使用私鑰來簽名JWT token,並且必須使用對應的公鑰來驗證token簽名,即驗證token是否有效。使用RS256可以保證IS4服務端是JWT的唯一簽名者,因為IS4服務端是唯一擁有私鑰的一方,前提是私鑰不會被泄露。所以我們需要一個證書為我們提供私鑰和公鑰。在開發環境可以利用IS4的AddDeveloperSigningCredential方法生成RSA文件,RSA文件為我們提供私鑰和公鑰,但是RSA文件不夠安全,打開文件可以直接看到公鑰和私鑰,在生產環境我們一般會生成證書來提供私鑰和公鑰。使用OpenSSL生成證書的方式如下:

1、安裝OpenSSL工具 ,官網下載地址:https://slproweb.com/products/Win32OpenSSL.html 

 

2、在CMD中執行以下命令

openssl req -newkey rsa:2048 -nodes -keyout cas.clientservice.key -x509 -days 365 -out cas.clientservice.cer

執行上面命令之后,我們可以在C:\Users\Andy目錄下面找到cas.clientservice.cer和cas.clientservice.key兩個文件

下面的命令是將生成的證書和Key封裝成一個文件,以便IdentityServer可以使用它們去正確地簽名tokens,文件會生成在CMD執行目錄下面“C:\Users\Andy”
openssl pkcs12 -export -in cas.clientservice.cer -inkey cas.clientservice.key -out IS4.pfx

IS4.pfx是證書名稱,可以自己修改,中途會提示讓你輸入Export Password,這個password在IS4中會用到,需要記下來。

如果執行上面的命令報錯,則需要配置環境變量,然后再執行命令:

 

3、配置IS4的證書

services.AddIdentityServer()
                    //.AddDeveloperSigningCredential(true, ConstanceHelper.AppSettings.CredentialFileName)
                    .AddSigningCredential(new X509Certificate2(Path.Combine(basePath,
                         configuration["Certificates:Path"]),
                         configuration["Certificates:Password"]))
                   .AddInMemoryApiResources(Config.GetApis())
                   .AddInMemoryIdentityResources(Config.GetIdentityResources())
                   .AddInMemoryClients(Config.GetClients())
                   .AddProfileService<ProfileService>()
                   .AddResourceOwnerValidator<ResourceOwnerPasswordValidator>()
                   .AddCustomAuthorizeRequestValidator<CustomAuthorizeRequestValidator>();

4、在appsettings.json中添加證書配置信息

{
  "Certificates": {
    "Path": "Certificates\\IS4.pfx",
    "Password": "xxxxxx"
  }
}

 

參考資料:

https://www.cnblogs.com/edisonchou/p/identityserver4_foundation_and_quickstart_01.html

https://www.cnblogs.com/dingshuanglei/p/10237710.html

https://www.cnblogs.com/ycm-up/p/9810525.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM