您能告诉我是否可以使用APPCMD应用程序将SSL证书分配给IIS7中的网站?
我熟悉设置HTTPS绑定的命令
appcmd set site /site.name:"A Site" /+bindings.[protocol='https',bindingInformation='*:443:www.mysite.com']
Run Code Online (Sandbox Code Playgroud)
以及如何获取当前映射
%windir%\system32\inetsrv\Appcmd
Run Code Online (Sandbox Code Playgroud)
但似乎找不到任何方法将网站映射到证书(例如证书哈希)
我希望这是一个相对直接的事情,而且我的谷歌技能在这个场合让我失望了.我有一个BASIC身份验证保护资源,我想让PHP执行POST HTTP请求.
我已经尝试将身份验证:基本(加密的u/p数据)注入到看起来不起作用的标题中 - 所以我想知道,Greyskull的功能是否可以表示StackOverflow提供任何指导.
$req .= "&cmd=_initiate_query";
$header = "POST /someendpoint HTTP/1.1\r\n".
"Host:example.com\n".
"Content-Type: application/x-www-form-urlencoded\r\n".
"User-Agent: PHP-Code\r\n".
"Content-Length: " . strlen($req) . "\r\n".
"Connection: close\r\n\r\n";
$fp = fsockopen ('ssl://example.com', 443, $errno, $errstr, 30);
if (!$fp) {
// HTTP ERROR
} else {
fputs ($fp, $header . $req);
while (!feof($fp)) {
$result .= fgets ($fp, 128);
}
fclose ($fp);
}
Run Code Online (Sandbox Code Playgroud) 我想找到一个平台/语言无关的解决方案,以确保FORM POST的来源来自预期的来源.即Page1.aspx在同一网站内发布到Page2.php.
具体来说,我在这里尝试做的是防止请求伪造.
我希望编写一些集成测试来比较 WCF 服务生成的 WSDL 与以前(和发布的)版本。这是为了确保服务合同与发布时间没有区别。
我希望我的测试是自包含的,而不依赖于任何外部资源,例如在 IIS 上托管。
我想我可以在测试中重新创建我的 IIS 托管环境,例如......
using (ServiceHost host = new ServiceHost(typeof(NSTest.HelloNS), new Uri("http://localhost:8000/Omega")))
{
host.AddServiceEndpoint(typeof(NSTest.IMy_NS), new BasicHttpBinding(), "Primary");
ServiceMetadataBehavior behavior = new ServiceMetadataBehavior();
behavior.HttpGetEnabled = true;
host.Description.Behaviors.Add(behavior);
host.AddServiceEndpoint(typeof(IMetadataExchange), MetadataExchangeBindings.CreateMexHttpBinding(), "mex");
host.Open();
}
Run Code Online (Sandbox Code Playgroud)
有没有其他人有更好的想法?
编辑: 显然这段代码只是为服务创建一个主机,我仍然缺少获取 WSDL 定义的客户端代码。
我需要使用Perl加密并在.Net(C#)上解密.即Perl加密文件,我的.Net代码解密文件(甚至可能验证完整性).
问题是我不熟悉Perl的加密功能.任何人都可以提供有关如何最好地解决这个问题以及可能性的指导吗?
提前致谢!
DC
文件已由Perl加密.初始解密尝试失败,我现在正试图确定是否有任何hoojoo正在进行(需要一些其他设置)
达夫Perl代码:
use strict;
use Crypt::Rijndael;
my $key ='...';
my $rcipher = Crypt::Rijndael->new ($key, Crypt::Rijndael::MODE_CBC());
undef $/;
my $encrypted = <>;
print $rcipher->decrypt($encrypted);
Run Code Online (Sandbox Code Playgroud)
C#解密实现
CryptoStream decryptor = null;
StreamReader srDecrypt = null;
FileStream fsIn = null;
RijndaelManaged rijndaelCipher = null;
string fileContents;
try
{
rijndaelCipher = new RijndaelManaged();
rijndaelCipher.Mode = CipherMode.CBC;
rijndaelCipher.Key = Encoding.UTF8.GetBytes(Password);
rijndaelCipher.IV = Encoding.UTF8.GetBytes(Password);
rijndaelCipher.Padding = PaddingMode.None;
fsIn = new FileStream(FilePath, FileMode.Open);
decryptor = new CryptoStream(fsIn, rijndaelCipher.CreateDecryptor(), CryptoStreamMode.Read);
srDecrypt = new StreamReader(decryptor);
fileContents = srDecrypt.ReadToEnd();
}
finally …Run Code Online (Sandbox Code Playgroud)