您現在的位置: 365建站網 > 365學習 > iis中通過ServerManager動態為站點綁定ssl證書代碼

iis中通過ServerManager動態為站點綁定ssl證書代碼

文章來源:365jz.com     點擊數:394    更新時間:2019-06-21 00:30   參與評論

通過ServerManager類對iis進行相對應的操作(包括建立站點,程序池,綁定域名之類,這里不詳細解釋,網上有很多這方面的資料),我就想既然可以手動在iis創建域名并綁定ssl證書,那應該也有對應的實現方法,果然找到了里面的一個方法,貼上代碼先

ServerManager sm = new ServerManager();

string bindingInformation = "*:" + port + ":" + bindingDomainName;

sm.Sites[webName].Bindings.Add(bindingInformation, certificateHash, certificateStoreName);

bindingInformation應該不用解釋,一眼就看到是綁定的端口和域名, certificateHash和certificateStoreName又是什么呢?certificateHash參數類型是byte[],而certificateStoreName參數類型是string,通過直接百度翻譯得到的結果是證書散列和證書,正在思考他們的來源時,突然想到購買ssl證書之后提供給我們的相關文件和秘鑰,應該和這里大有關聯,通過查詢一些資料,得知certificateHash(證書散列)是通過.pfx文件獲取而來的,而certificateStoreName則是證書名稱,這里貼上完整的代碼

 // <summary>
        /// 增加綁定域名(ssl)
        /// </summary>
        /// <param name="webName">站點名稱</param>
        /// <param name="port">端口</param>
        /// <param name="bindingDomainName">綁定域名</param>
        public void AddHostHeaderSSL(string webName, string port, string bindingDomainName)
        {
            //**pfxPath**是指提供給你的.pfx文件的路徑,購買ssl之后他會提供給你相關的文件,里面有多個文件
            //一般包含apache文件夾,iis文件夾,nginx文件夾,我使用的是iis部署,所以.pfx文件在iis文件夾里面
            //**certPwd**是指購買ssl之后提供給你的秘鑰
            string pfx = Directory.GetFiles(pfxPath, "*.pfx", SearchOption.AllDirectories).FirstOrDefault();
            var store = new X509Store(StoreName.AuthRoot, StoreLocation.LocalMachine);
            store.Open(OpenFlags.OpenExistingOnly | OpenFlags.ReadWrite);
            var certificate = new X509Certificate2(pfx, certPwd, X509KeyStorageFlags.Exportable | X509KeyStorageFlags.PersistKeySet);
            store.Add(certificate);
            store.Close();
            var certificateStoreName = store.Name;              //綁定的證書名稱
            var certificateHash = certificate.GetCertHash();    //證書內容
            ServerManager sm = new ServerManager();
            string bindingInformation = "*:" + port + ":" + bindingDomainName;
            sm.Sites[webName].Bindings.Add(bindingInformation, certificateHash, certificateStoreName);
            sm.CommitChanges();
        }

至此,動態綁定ssl證書的功能就實現了


以下示例演示CertificateHash屬性。如果協議標識符為“https”,則顯示證書哈希和證書庫名稱。此代碼示例是為Binding提供的更大示例的一部分。

if (binding.Protocol == "https"){
     // There is a CertificateHash and  
     // CertificateStoreName for the https protocol only.
    bindingdisplay = bindingdisplay + "\n   CertificateHash: " + 
        binding.CertificateHash + ": ";    // Display the hash.
    foreach (System.Byte certhashbyte in binding.CertificateHash)
    {
        bindingdisplay = bindingdisplay + certhashbyte.ToString() + " ";
    }
    bindingdisplay = bindingdisplay + "\n   CertificateStoreName: " + 
        binding.CertificateStoreName;}


vb.net

If (binding.Protocol = "https") Then
    ' There is a CertificateHash and  
    ' CertificateStoreName for the https protocol only.
    bindingdisplay = (bindingdisplay + (""& vbLf&"   CertificateHash: "  _
                + (binding.CertificateHash + ": ")))
    ' Display the hash.
    For Each certhashbyte As Byte In binding.CertificateHash
        bindingdisplay = (bindingdisplay  _
                    + (certhashbyte.ToString + " "))
    Next
    bindingdisplay = (bindingdisplay + (""& vbLf&"   CertificateStoreName: " + binding.CertificateStoreName))
End If


如對本文有疑問,請提交到交流論壇,廣大熱心網友會為你解答??! 點擊進入論壇


發表評論 (394人查看,0條評論)
請自覺遵守互聯網相關的政策法規,嚴禁發布色情、暴力、反動的言論。
用戶名: 驗證碼: 點擊我更換圖片
最新評論
------分隔線----------------------------
自拍偷拍福力视频,偷拍国际精品,麻豆一区福利电影,国产网红视频午夜福利,se视频大全,久久国产AV影院 不要太满了鼓起来了别按| 真实国产乱子伦高清对白| 情不自禁电影| 超碰在线视频观看欧美视频| 又长又大又粗又硬3p免费视频| 4480新热播影院| 天天摸天天添天天爱| 国产专区青青在线视频| 亚洲 欧洲 日产 国码 v不卡| 虏囚女教师~肉欲の放课后| 免费动漫成本人视频网站| 美女被强遭的免费网站视频| 欧美变态另类牲交zozo| 欧美狂野av在线观看| 香蕉啪视频在线观看视频久| 综合图区经典| 亲胸揉屁股膜下刺激视频| 亚洲色大成网站www网速快| 国产成人剧情av麻豆映画| 国产女人叫床高潮视频在线观看| 碾磨着两人结合的地方总裁| 我不卡| 欧美高清videosgatsdo| 好看AV中文字幕在线观看| 欧美色视频日本片免费| 51视频在线视频观看| 四十路の五十路熟女豊満| 人妻无码不卡中文字幕系列| av女优的贴吧有哪些| 欧美牲交a欧美牲交aⅴ免费真| 久久九九精品国产免费看小说| http://www.mydirtystepmom.net