首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >IIS 8-使用SSL证书时找不到default.html

IIS 8-使用SSL证书时找不到default.html
EN

Stack Overflow用户
提问于 2013-12-18 13:09:10
回答 1查看 251关注 0票数 3

我创建了一个webapp和一个控制台应用程序来在IIS中注册网站。似乎根本没有问题。

这是我用来在IIS中注册网站的代码。

代码语言:javascript
复制
Dim manager As New ServerManager
Dim site As Site = manager.Sites.Add("MyControl", "http", "*:80:test.localhost", "C:\\inetpub\wwwroot\MyControl")

manager.ApplicationPools.Add("MyControl")
site.ApplicationDefaults.ApplicationPoolName = "MyControl"

manager.CommitChanges()

站点在IIS中注册良好。输入为http,主机名为test.localhost,端口为80,ip为*。就像预期的那样。

我修改了我的主机文件,添加了行:127.0.0.1 test.localhost,这样导航到http://test.localhost就可以在重定向到IIS上的站点时解析。

这应该意味着重定向到默认页面default.html,它位于inetpub/wwwroot/MyControl的根目录中。

然而,这种情况并没有发生。我得到一个空白页,没有标题,源是空白的,但找不到一个页面。此外,如果我自己导航到http://test.localhost/default.html,我会得到一个空白页,但标题是: MyControl。如果我现在看一下源代码,我可以看到它找到了文件,但是没有显示任何内容。

如果我手动在IIS中设置网站,就没有问题。

任何想法都将不胜感激。

编辑:

到现在为止还好。现在,我已经使用了上面的代码。你问了什么?毫无线索。

现在我需要使用相同的网站,但安装它与SSL证书。

我在用这个代码

代码语言:javascript
复制
Module Main
<DllImport("advapi32.DLL", SetLastError:=True)>
Public Function LogonUser(ByVal username As String, ByVal domain As String,
                          ByVal password As String, ByVal logonType As Integer, ByVal logonProvider As Integer,
                          ByRef token As IntPtr) As Integer
End Function

Sub Main()
    'Load indstillinger fra app.config
    Dim sslPath As String = ConfigurationManager.AppSettings("sslPath")
    Dim sslPassword As String = ConfigurationManager.AppSettings("sslPassword")
    Dim remoteUsername As String = ConfigurationManager.AppSettings("remoteUsername")
    Dim remotePassword As String = ConfigurationManager.AppSettings("remotePassword")

    'Lav en store, således at vi kan få fat i vores ssl certifikat
    Dim store As X509Store = New X509Store(StoreName.My, StoreLocation.LocalMachine)
    store.Open(OpenFlags.OpenExistingOnly Or OpenFlags.ReadWrite)

    'Generer credentials til impersonation
    Dim adminToken As IntPtr = IntPtr.Zero
    Dim admin As WindowsIdentity = Nothing
    Dim context As WindowsImpersonationContext = Nothing

    'Login med den specificerede bruger
    LogonUser(remoteUsername, System.Environment.MachineName, remotePassword, 9, 0, adminToken) '9 afspejler logintype og 0 afspejler loginprovider - Ingen idé om hvad det har af betydning
    admin = New WindowsIdentity(adminToken)
    context = admin.Impersonate()

    'Import af SSL certifikat
    Dim certificate As X509Certificate2 = New X509Certificate2(sslPath, sslPassword) 'Sti til SSL certifikat og password til at installere dette
    store.Add(certificate)

    'Opret en manager og en config til oprettelse af site
    Dim manager As New ServerManager
    Dim config As Microsoft.Web.Administration.Configuration = manager.GetApplicationHostConfiguration()

    'Opret site i IIS med det valgte certifikat
    Dim site As Site = manager.Sites.Add("MyControl", "*:443:webmail.jcdhotel.dk", "C:\\inetpub\wwwroot\MyControl", certificate.GetCertHash())

    'Kræv SSL
    Dim accessSection As Microsoft.Web.Administration.ConfigurationSection = config.GetSection("system.webServer/security/access", "MyControl")
    accessSection("sslFlags") = "Ssl"

    'Opret en applicationpool specifikt til MyControl og sæt denne til default
    manager.ApplicationPools.Add("MyControl")
    site.ApplicationDefaults.ApplicationPoolName = "MyControl"

    'Luk store
    store.Close()

    'Gem ændringer og revert impersonation
    manager.CommitChanges()
    context.Undo()
End Sub

再来一次。代码正在IIS中注册网站,并将证书设置得很好。绑定如下所示

我再次修改了我的主机文件,添加了行127.0.0.1 webmail.jcdhotel.dk

我可以转到链接https://webmail.jcdhotel.dk并收到一个空白页面,而源是空白的。然后我可以转到https://webmail.jcdhotel.dk/default.html,标题将被设置,现在我可以检查源代码,但是页面仍然是空的。

再次,任何帮助都是非常感谢和感谢您在事先!

编辑:

新信息。通过手动尝试使用SSL证书将网站添加到IIS,我收到以下错误:

希望这将有助于对这一问题有所了解。

编辑:

最后编辑,希望:D

现在我可以使用SSL证书手动添加绑定。该问题是由于证书安装不正确造成的。这让我进入了最后的障碍。

使用vb.net将证书添加到存储区时。如何检查“允许证书导出”?-因为这解决了手动添加证书时的问题。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-12-23 12:25:08

在尝试之后,似乎是所有的事情,我最终得到了以下代码

代码语言:javascript
复制
<DllImport("advapi32.DLL", SetLastError:=True)>
Public Function LogonUser(ByVal username As String, ByVal domain As String,
                          ByVal password As String, ByVal logonType As Integer, ByVal logonProvider As Integer,
                          ByRef token As IntPtr) As Integer
End Function

Sub Main()
    'Load indstillinger fra app.config
    Dim sslPath As String = ConfigurationManager.AppSettings("sslPath")
    Dim sslPassword As String = ConfigurationManager.AppSettings("sslPassword")
    Dim remoteUsername As String = ConfigurationManager.AppSettings("remoteUsername")
    Dim remotePassword As String = ConfigurationManager.AppSettings("remotePassword")

    'Lav en store, således at vi kan få fat i vores ssl certifikat
    Dim store As X509Store = New X509Store(StoreName.My, StoreLocation.LocalMachine)

    store.Open(OpenFlags.ReadWrite)

    'Generer credentials til impersonation
    Dim adminToken As IntPtr = IntPtr.Zero
    Dim admin As WindowsIdentity = Nothing
    Dim context As WindowsImpersonationContext = Nothing

    'Login med den specificerede bruger
    LogonUser(remoteUsername, System.Environment.MachineName, remotePassword, 9, 0, adminToken) '9 afspejler logintype og 0 afspejler loginprovider - Ingen idé om hvad det har af betydning
    admin = New WindowsIdentity(adminToken)
    context = admin.Impersonate()

    'Import af SSL certifikat
    Dim certificate As X509Certificate2 = New X509Certificate2(sslPath, sslPassword, X509KeyStorageFlags.PersistKeySet) 'Sti til SSL certifikat og password til at installere dette

    store.Add(certificate)

    'Opret en manager og en config til oprettelse af site
    Using manager As New ServerManager
        Dim config As Microsoft.Web.Administration.Configuration = manager.GetApplicationHostConfiguration()

        'Opret site i IIS med det valgte certifikat
        Dim site As Site = manager.Sites.Add("MyControl", "*:443:webmail.jcdhotel.dk", "C:\inetpub\wwwroot\MyControl", certificate.GetCertHash())

        'Kræv SSL
        Dim accessSection As Microsoft.Web.Administration.ConfigurationSection = config.GetSection("system.webServer/security/access", "MyControl")
        accessSection("sslFlags") = "Ssl"

        'Opret en applicationpool specifikt til MyControl og sæt denne til default
        manager.ApplicationPools.Add("MyControl")
        site.ApplicationDefaults.ApplicationPoolName = "MyControl"

        'Luk store
        store.Close()

        'Gem ændringer og revert impersonation
        manager.CommitChanges()
        context.Undo()
    End Using
End Sub

问题就在眼前

代码语言:javascript
复制
Dim site As Site = manager.Sites.Add("MyControl", "*:443:webmail.jcdhotel.dk", "C:\inetpub\wwwroot\MyControl", certificate.GetCertHash())

我已经习惯了C#和你如何转义字符串。所以我错误地插入了一个额外的\使这条线看起来像这样

Dim site As Site = manager.Sites.Add("MyControl", "*:443:webmail.jcdhotel.dk", "C:\\inetpub\wwwroot\MyControl", certificate.GetCertHash())

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20659120

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档