小编Kri*_*aig的帖子

Apache不会请求我的SSL客户端证书

首先,请注意我是配置SSL的新手.在过去,我总是很幸运有一个IT部门可以提前为我做好准备.因此,请准备好我可能需要澄清你的一些答案.=)

我正在尝试做什么

我正在为员工建立一个公司内联网网站.例如,将有一个浏览器起始页面,显示为每个员工定制的内容.因此,我需要能够识别所述员工而无需任何用户名/密码或其他提示(虽然一次性设置是可以的;我只是不希望每次都提示他们).当然,SSL似乎是实现这一目标的最佳方式.

我将使用MySQL数据库设置将"用户"帐户与SSL_CLIENT_M_SERIAL和SSL_CLIENT_I_DN相关联,我假设每个客户端证书(?)都是唯一的.我从这篇文章中得到了这个想法:http: //cweiske.de/tagebuch/ssl-client-certificates.htm

用户第一次访问内部网站时,他们将没有证书(我不想为客户手动生成证书!),在这种情况下$ _SERVER ["SSL_CLIENT_VERIFY"] =="NONE".如果发生这种情况,它将转到用户帐户设置页面,其中包括PHP生成SSL客户端证书并将其发送到浏览器以供用户安装的步骤.很好,很简单.然后,用户安装证书,建立关联,并在重新启动浏览器后(为了更好地衡量),用户返回内部网站.

此时,Apache应该请求客户端证书,然后浏览器发送该证书.PHP脚本然后解析必要的$ _SERVER变量,与MySQL数据库进行比较,并且所有人都有好的时间.再次,好又简单.

什么工作到目前为止

我安装了服务器端证书.是的,他们是自签名的(出于显而易见的原因).Apache安装了mod_ssl,所有这些似乎都运行正常.我创建了一个只转储$ _SERVER数组的PHP脚本,所有SSL_SERVER_*键值都与我为它创建的证书相匹配.

问题

我无法获得客户端证书!在同一个PHP脚本中,无论我做什么,都缺少SSL_CLIENT_VERIFY =="NONE"和其他SSL_CLIENT_*键.如果我在ssl.conf中将SSLVerifyClient设置为可选,则会发生这种情况.根据我读过的每个教程,他们都说网络服务器应该向浏览器询问客户端证书.事情是,我无法做到这一点!它只是直接进入PHP脚本,并假设我根本没有客户端证书.这种情况发生在Firefox,Chrome和IE中.

所以我尝试将SSLVerifyClient设置为必需并重新启动Web服务器.有了这个选项,我甚至无法建立SSL连接.Firefox只是说连接已经重置(其他浏览器也会显示自己的错误版本).奇怪的是,日志在这些连接尝试中没有显示任何活动!即access_log,error_log,ssl_access_log,ssl_error_log和ssl_request_log都不显示任何内容 ; 就好像这次尝试从未发生过一样.这令人沮丧,因为这意味着我甚至没有可以使用的错误消息.只是一个网络服务器被动 - 积极地告诉我下地狱.

我尝试使用PHP的OpenSSL扩展手动生成/安装我自己的客户端证书.证书安装得很好,虽然我找不到任何关于如何将该证书与服务器关联的信息(假设我甚至需要?).此外,它似乎无关紧要,因为如果设置了可选项,Apache仍然不会请求客户端证书.如果设置了需求,它只是在没有解释的情况下爆炸.无论如何,我需要将它设置为可选,以使此模式起作用.

环境

操作系统:CentOS 5.7 64位(VirtualBox)

Apache:2.2.3

PHP:5.3.10

我猜你可能需要更多的信息来帮助我,所以请问!我会为你提供你需要的一切.

总而言之,我需要知道如何在给定上述条件的情况下让Apache请求SSL客户端证书.此外,如果有任何特殊的签名/等必须要使客户端证书与服务器证书"兼容"(再次,没有通过shell为每个客户端证书手动执行!),我将需要知道好.

到目前为止,我100%坚持这一点.在Google上找不到任何远程帮助.您可以提供的任何帮助将是非常感谢!! 谢谢!=)

php linux apache ssl openssl

15
推荐指数
2
解决办法
1万
查看次数

在mod_auth_sspi_1.0.4-2.2.2中禁用登录提示

我正在做的事情:

  • 在我们公司的Intranet上创建一个主页,该主页自动抓取查看该页面的人的登录Windows用户名,而不会在页面加载时提示用户输入这些凭据.

  • 目前,我只是想让它获取本地用户名,因为在我们的IT人员获得域名设置之前还需要一段时间.例如,现在我希望它在没有任何提示的情况下捕获"(PC-Name)\ windows.user.name".

环境:

  • Windows 7 x64上的Apache 2.2.21(一旦投入生产,将在CentOS上).

  • PHP 5.3.8(VC9-ZTS).

  • Internet Explorer 9.0.8x和Firefox 6.0.2(稍后会担心Chrome).

  • 当前的测试页面只是一个调用print_r($ _SERVER)的PHP脚本.

  • 为了简单起见,我正在测试它的目录不是VirtualHost.

到目前为止我采取的步骤:

  • 从SourceForge下载mod_sspi_1.0.4-2.2.2并将mod_auth_sspi.so解压缩到Apache模块目录.

  • 添加了模块声明:

    LoadModule sspi_auth_module modules/mod_auth_sspi.so

  • 添加了目录定义:

    AllowOverride无选项无订单允许,拒绝全部允许

    AuthName "My Intranet"
    AuthType SSPI
    SSPIAuth On
    SSPIAuthoritative Off
    
    require valid-user
    
    Run Code Online (Sandbox Code Playgroud)

  • 在Firefox中启用集成身份验证,转到about:config并将network.automatic-ntlm-auth.trusted-uris设置为PHP脚本的绝对URL路径,然后重新启动Firefox.

  • 我还没有在IE中完成相同的步骤,但我会让Firefox工作,因为这是我们内部支持的主要浏览器.

  • 重新启动Apache并尝试加载测试PHP脚本.

结果:

  • 在IE和Firefox中,在页面加载之前我会收到提示输入用户名和密码.我不想要那个提示.我希望在没有提示的情况下自动检测用户名.

到目前为止的疑难

  • 我尝试过循环使用各种SSPI选项,例如authritative on/off和诸如此类的东西.没有效果.

  • 如果我删除"require valid-user",则不再出现提示,但是也没有传递用户名(它不是NULL;根本不在数组周期中设置).

  • 如果我在提示符下点击"取消",我会得到标准的"需要身份验证"页面.

  • 如果我输入的用户名无效,或者用户名正确但密码错误,则会加载该页面,但用户名将为"(PC-Name)\ Guest".

  • 如果我输入正确的用户名/密码,则显示用户名而不是Guest.

  • 一旦我在IE或Firefox中输入用户名/密码,浏览器会记住后续页面上的用户名,直到我清除存储的密码缓存或重新启动浏览器.

  • 我花了大约3个小时谷歌搜索和随机猜测.零成功.我发现了一些人们提出这个问题的孤立的论坛帖子,但要么他们没有得到答复,要么提供我已经尝试过但没有成功的解决方案.

同样,我想要的是加载页面,没有任何提示,并在$ _SERVER数组输出中显示当前登录的Windows用户名.

据我所知,这可能是:Windows配置问题,Apache配置问题或浏览器配置问题.除此之外,我是新鲜的想法.

我将非常感谢您提供的任何帮助.谢谢!

--Kris

php windows apache authentication sspi

8
推荐指数
1
解决办法
5118
查看次数

与 RestSharp 文档相反,request.AddFile 不接受 FileParameter 作为 AddFile 的参数。找不到任何有关如何迁移的文档。有任何想法吗?

好的,这是自从我将 RestSharp 更新到当前版本后出现问题的 C# 代码:

restRequest.Files.Add((FileParameter)file); // Added cast for clarity
Run Code Online (Sandbox Code Playgroud)

根据当前的官方文档,这是正确的选择:

restRequest.AddFile((FileParameter)file);
Run Code Online (Sandbox Code Playgroud)

然而,这似乎是不正确的,因为它抛出了这个异常:

方法“AddFile”没有重载需要 1 个参数

这直接与 RestSharp 文档相矛盾。我一直无法找到任何方法来解决这个问题。我尝试了那里的重载,但 FileParameter 不再包含所需的 Writer 属性,并且我找不到任何提及该属性移动到何处的文档。

我缺少什么?

.net c# rest http restsharp

7
推荐指数
1
解决办法
1734
查看次数

在 Xamarin.Forms 中,将 ScrollView 添加到页面后,所有单击事件都停止工作。ScrollView 是否拦截了点击?

这是有问题的相关代码:

XAML:

<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             xmlns:d="http://xamarin.com/schemas/2014/forms/design"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
             mc:Ignorable="d"
             x:Name="ContentPage_MainPage"
             x:Class="OpenBacon.MainPage">

    <ContentPage.ToolbarItems>
        <ToolbarItem x:Name="ToolbarItem_Subreddits" Order="Primary" Priority="10" Text="Initializing...." Clicked="ToolbarItemSubreddits_Clicked" />
        <ToolbarItem x:Name="ToolbarItem_Spacer" Order="Primary" Priority="20" Text="     " />
        <ToolbarItem Order="Primary" Priority="30" Clicked="ToolbarItemSearch_Clicked">
            <ToolbarItem.Icon>
                <OnPlatform x:TypeArguments="FileImageSource"  Android="OpenBaconSearch" />
            </ToolbarItem.Icon>
        </ToolbarItem>
        <ToolbarItem x:Name="ToolbarItem_Mail" Order="Primary" Priority="40" Clicked="ToolbarItemMail_Clicked">
            <ToolbarItem.Icon>
                <OnPlatform x:TypeArguments="FileImageSource"  Android="OpenBaconMail" />
            </ToolbarItem.Icon>
        </ToolbarItem>
        <ToolbarItem Order="Primary" Priority="50" Clicked="ToolbarItemBaconButton_Clicked">
            <ToolbarItem.Icon>
                <OnPlatform x:TypeArguments="FileImageSource"  Android="OpenBaconBaconButton" />
            </ToolbarItem.Icon>
        </ToolbarItem>
    </ContentPage.ToolbarItems>
    <ContentPage.Content>
        <AbsoluteLayout Padding="0" HorizontalOptions="FillAndExpand" VerticalOptions="FillAndExpand">
            <ScrollView x:FieldModifier="public" x:Name="ScrollView_Main" Orientation="Vertical">
                <StackLayout x:Name="StackLayout_Main">
                    <!-- Sort bar. -->
                    <Grid>
                        <Grid.RowDefinitions>
                            <RowDefinition Height="Auto" /> …
Run Code Online (Sandbox Code Playgroud)

c# android xamarin.android xamarin xamarin.forms

5
推荐指数
1
解决办法
1398
查看次数

用于匹配任何长度的所有重复子串的正则表达式

假设我们有一个字符串: "abcbcdcde"

我想使用正则表达式识别在该字符串中重复的所有子串(即没有暴力迭代循环).

对于上面的字符串,结果集将是: {"b","bc","c","cd","d"}

我必须承认,对于有经验的人来说,我的正则表达式应该比它应该更加生疏.我尝试使用反向引用,但这只会匹配连续的重复项.我需要匹配所有重复项,连续或其他.

换句话说,我想匹配> =第二次出现的任何字符.如果子串出现5次,那么我想捕获每个出现2-5.合理?

到目前为止,这是我可悲的尝试:

preg_match_all( '/(.+)(.*)\1+/', $string, $matches );  // Way off!
Run Code Online (Sandbox Code Playgroud)

我试着玩前瞻,但我只是在屠杀它.我在PHP(PCRE)中这样做,但问题或多或少与语言无关.我发现自己对此感到困惑,这有点令人尴尬.

php regex pcre substring duplicates

3
推荐指数
1
解决办法
1721
查看次数