仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 2729|回复: 18
打印 上一主题 下一主题

[学习教程] ASP编程:平安技能:设置装备摆设 IIS 4.0 证书判定

[复制链接]
精灵巫婆 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-2-16 00:22:42 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
使用filesystemobject,可以对服务器上的文件进行操作,浏览、复制、移动、删除等。有ado的支持,asp对数据库的操作非常得心应手。你甚至可以像使用本地数据库那样,管理远程主机上的数据库,对表格、记录进行各种操作。   设置装备摆设 IIS 4.0 证书判定

Ramon Ali
Windows NT杂志 - 1999 年2月


利用证书办事器1.0(Certificate Server 1.0)来作为证书威望

假如你能付与可托用户通明地会见加密网站的权限,岂不是很好?如许的话,每当这些用户在进入你的站点的时分,就不用老是需
要输出他们的用户名和口令了。用户可以同你的网站上的加密局部停止通讯,而不必供应用户名和口令的一个办法是,在设置装备摆设IIS
(Internet Information Server,互连网信息办事器)请求质询/呼应认证以后,在Windows NT体系上利用IE阅读器。但假如你
的用户利用的并非NT体系或IE阅读器,那又该怎样办呢?谜底就是:利用Microsoft Certificate Server(微软证书办事
器)。

Certificate Server 是 NT 4.0 Option Pack 的构成局部之一,它使你可以为那些身份验证及格的用户生成并发放数字证书,
从而使他们在登录站点时可以不用供应身份证实就能够会见本人的NT用户帐号。

数字证书关于收集的平安性十分主要。数字证书实践上是一份电子文档,盘算机体系可以使用它来肯定和验证那些正在阅读收集,
收发电子邮件和传输文件的用户的身份。获得数字证书的一条路子是经由过程证书威望。这些机构经由过程核适用户的身份而向他们或他们
的体系发表证书。证书办事器(Certificate Server)让你充任企业外部的证书威望的脚色,使你可以回护员工的秘密性,增添
开支并进步办事质量。(想取得关于证书威望和数字证书的后台信息,请参阅1997年10月期上Tao Zhou的文章"You Can Be a
Web Certification Authority")

但是不幸的是,查找有关设置装备摆设证书办事器的有价值文档相当坚苦。在TechNet和微软网站上,你也许能找到零散的只字片语,但这
些粗略的资料常常使你不克不及很快就弄分明。所以在本文中,我将和你一同一步步地演示我所懂得的装置和设置装备摆设证书办事器的进程,
包含如何装置证书办事器,启动证书威望办事和发表客户证书。

出发点

起首,你需求装置IIS4.0,Microsoft Management Console (MMC,微软办理掌握台)和Certificate Server 1.0。这些都包括
在微软Windows NT 4.0 Option Pack的CD-ROM光盘上。微软公司在它的站点(http://www.microsoft.com/china/)上宣布了用
于修改Certificate Server1.0缺点的最新补钉。该缺点招致当体系同时答应证书和匿名会见时,没有证书的用户会被挡在站点之
外。依据我利用证书办事器的经历,你其实其实不需求这个补钉。由于当你设置装备摆设会见允许体例时,你可以避开这个成绩。这点前面我
将注释。(然而,我不幸还碰到其他一些毛病,而今朝还没有针对它们的补钉法式。)

从Option Pack CD-ROM光盘上装置证书办事器。假如你已装置了证书办事器而只是还不克不及让它正常运转,我将告知你一个秘
诀。当证书办事器的装置进程提醒你在装置窗口中输出CA(Certificate Authority,证书威望)的详细信息时,如屏幕1所示,


屏幕1

假如你在State域中不输出CA姓名,IIS就不克不及在它的数据库中准确的注册这个CA,招致证书办事器不会承受带这个CA签名的客户证
书。假如你碰着了这个成绩,你必需从头装置证书办事器。但是,当你从头装置证书办事器时,能够会收到上面两条毛病信息中的
一条--证书办事器设置装备摆设导游(Configuration Wizard)毛病或Windows NT装置毛病。在一切我碰着的情形下,这些信息仅仅标明
文件csback.gif, csbull.gif, 和cslogo.gif没有从Certificate Server 的根目次 (凡是是 C:\winnt\system32
\certsrv) 拷贝到CertEnroll 子目次下。假如你收到这些毛病信息,无妨手工完成这些文件的拷贝。

从NT的掌握面板中办事项中启动证书威望(Certificate Authority)办事。假如办事不克不及启动,成绩多是办事器找不到
Microsoft Access 数据库certmdb.mdb。不晓得甚么缘由,证书办事器装置时将ODBC(Open Database Connectivity,开放式
数据库毗连)体系数据源称号(Data Source Name)指向证书办事器根目次,而同时在CertAdm子目次中的 global.asa 文件中却
将其指向C:\winnt\system32 目次。而实践上证书办事器r 装置时将certmdb.mdb 文件放在C:\winnt\system32目次下。所以,
需求修正CertSrv 体系数据源称号 (从掌握面板, ODBC项中),使其指向certmdb.mdb 文件, 如屏幕2所示。如许,你的CA 办事
失业已停当,可以运转了。


屏幕2

设置CA

Certificate Server 装置法式将提醒为办事器创立一个SSL (Secure Sockets Layer,平安套接层) 密匙。SSL 办事器密匙允
许收集办事器和客户阅读器停止平安加密的会话。假如没有SSL 密匙, IIS 4.0将没法利用基于证书的客户验证。在Create New
Key(创立新密匙)对话框中经由过程选择"Automatically send the request to an online authority(主动将请求发送到某在
线威望)"选项,你可以一次生成并签名SSL办事器密匙恳求,如屏幕3所示。


屏幕3

假如你选择生成一个密匙恳求文件,可以使用证书办事器的号令行适用东西certreq.exe验证这个文件。 (你可以用此文件从第三
方CA那边取得一个办事器密匙签名。) 当你取得一把带有签名的密匙时,证书办事器装置就半途而废了。

如今,你必需把你刚创立的CA增添到办事器的可托CA列表中去。经由过程在你的阅读器中装置办事器密匙可以做到这点。为此,启动服
务器上的IE 4.0 ,阅读站点http://server name/certsrv/certenroll/cacerts.htm。题目为Certificate Authority
Certificate List 的网页将会呈现,并将列出你刚生成的CA密匙。点击此毗连并选择"Open this file from its current
location(在以后地位翻开此文件)",你将看到装置New Site Certificate(新站点证书)的提醒,如屏幕4所示。



屏幕4

点击View Certificate, 确证密匙细节输出无误,然后点击OK。你将看到另外一提醒扣问你将此证书增添到顶级蕴藏中,点击OK。
在IE 4.0当选择View菜单,顺次选择Internet Options, Content, Authorities,反省IE 4.0是不是已胜利地把证书增添到可托
威望列表中了。你将看到刚生成的CA处于IE 4.0的证书威望列表中,如屏幕5所示。



屏幕5

最初,在IIS装置的根目次下(凡是是C:\winnt\system32\inetsrv)运转上面的号令。这些号令将使用用你生成的CA的具体数据更
新IIS 数据库:

Iisca

Net stop iisadmin /y

Net start w3svc

发表客户证书

如今你可以入手下手发表客户证书了。客户证书将直接装置在阅读器上。(Netscape 和Microsoft公司的新阅读器都撑持客户证书;
然而,我将侧重讲IE 4.0。)从客户端阅读http://server name/certsrv/certenroll/ceenroll.asp。Certificate
Enrollment Form(证书挂号表)将让你填写客户证书的各个细节。准确填写各项并点击Submit Request(提交请求)。当提交要
求时,将挪用IE 4.0的Web Server Enrollment Page(办事器的挂号页)。在该页面上点击Download(下传)就可以把客户证书安
装到阅读器上。选择View菜单,顺次选择Internet Options, Content, Personal,可以反省客户证书是不是正常装置了,你将在
IE 4.0的Client Authentication(客户验证)窗口中看到此客户证书。

在装置完客户证书以后,你需求让IIS晓得此证书的具有者被受权会见站点上受平安回护的区域。由于IIS的收集平安性是基于
Windows NT用户帐号的,所以IIS需求某种办法能将每一个客户证书映照到办事器上某个NT用户或组的帐号上。实践上,IIS是使用
用客户证书映照表(Client Certificate Mapping table)来完成这一点的。为了创立客户证书映照,你必需将每一个证书独自从
一个文本文件中引入IIS。这虽然是个繁琐的进程,但却多是创立响应映照的独一的办法。所以,必需找到某种办法能捕捉客户浏
览器中装置的客户证书,并将其寄存到文本文件中。最便利的举措是修正ASP(Active Server Pages,静态办事器网页)代码来实
现。清单1列出了把客户证书写入到一个文本文件中的ASP代码。

清单1 将客户证书写到文本文件的ASP代码

<% @Language = VBScript %>
<% Response.Buffer = True %>

<html>

<head>
<title>Client Certificate Capture</title>
</head>
<body>
<%
'Instantiate the ASP FileSystemObject in order
'to create a text file
Set fs = Server.CreateObject("Scripting.FileSystemObject")

'Create text file using append mode
Set outStream = fs.OpenTextFile( "C:\Inetpub\wwwroot\certificates\cert.txt", 8, True )

'Save certificate issuer information to text file
outStream.WriteLine( "# Issuer: " & Request.ClientCertificate("Issuer") )

'Extract certificate subject (user) and account information
'from certificate
su = Request.ClientCertificate( "Subject" )
mx = len(su)
for x = 1 to mx
if mid(su,x,1)=chr(10) or mid(su,x,1)=chr(13) then
su=left(su,x-1)+";"+right(su,mx-x)
end if
next
outStream.WriteLine( "# Subject: " & su )
outStream.WriteLine( "# Account: " & Request.ServerVariables("REMOTE_USER") )

'Extract encrypted certificate text from certificate; encode text as 64-bit data
uue = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"

outStream.WriteLine( "-----BEGIN CERTIFICATE-----" )
cer = Request.ClientCertificate( "Certificate" )
lcer = len(cer)
l = 0

for x = 1 to lcer step 3
a1 = asc(mid(cer,x,1))
if x+1 <= lcer then
a2 = asc(mid(cer,x+1,1))
if x+2 <=lcer then
a3 = asc(mid(cer,x+2,1))
else
a3 = 0
end if
else
a2 = 0
a3 = 0
end if
outStream.Write mid(uue, (a1 and 252)/4 +1 ,1)
outStream.Write mid(uue, (a1 and 3)*16 + (a2 and 240)/16 +1 ,1)
if x+1 <= lcer then
outStream.Write mid(uue, (a2 and 15)*4 + (a3 and 192)/64 +1 ,1)
if x+2 <= lcer then
outStream.Write mid(uue, (a3 and 63) +1 ,1)
else
outStream.Write "="
end if
else
outStream.Write "=="
end if
l = l +4
if l = 64 then
outStream.WriteLine("")
l = 0
end if
next
if l > 0 then
outStream.WriteLine( "" )
end if
outStream.WriteLine( "-----END CERTIFICATE-----" )

Response.Write "Your certificate information has been received and logged successfully <br>"
Response.Write "You will be notified when we have configured your secured access to this Site "
%>

</body>
</html>

在你的收集办事器上创立一个目次来寄存此ASP文件,并恰当地修正代码中的途径,使它能将证手札息写到准确的中央。修正后的路
径如清单1所示。为了使此ASP法式能创立文本法式(清单1中是cert.txt),你需求在IIS中设置权限,答应对此目次停止写操作。
设置使寄存此ASP文件的目次能同时以https体例和Anonymous体例会见,如许可以创立恳求用户提交证书的提醒。为了以https和
Anonymous体例会见,利用https://而不是http://来援用此ASP文件。运转此ASP文件的客户将收到恳求提交客户证书的提醒。结
果,用户提交的信息将写入到文本文件纪录上去。

假如客户阅读此ASP文件时,而没有客户证书显示在客户验证窗口内,则多是IIS元数据库中的CA信息出了成绩。要处理此成绩,
从头在IIS根目次下运转上文提到的三个号令(Iisca, NET STOP iisadmin /y,和 NET START w3svc)。如今cert.tx将应当包括
客户证书内容,如清单2所示。将清单2的内容拷贝到你喜欢的文本编纂器中,并保留到文件。

清单2 客户证书码的例子

# Issuer: C=AU, S=Test CA, L=Test Locality, O=Test Organization, OU=Test Unit, CN=Test CA
# Subject: EMAIL=ramon@sms.com.au, C=AU, S=NSW, L=Sydney, O=SMS Consulting Group P/L, OU=Network Services,
CN=Ramon Ali
# Account:
-----BEGIN CERTIFICATE-----
MIIDwzCCA22gAwIBAgIIChJSoAAAAAIwDQYJKoZIhvcNAQEEBQAweTELMAkGA1UE
BhMCQVUxEDAOBgNVBAgTB1Rlc3QgQ0ExFjAUBgNVBAcTDVRlc3QgTG9jYWxpdHkx
GjAYBgNVBAoTEVRlc3QgT3JnYW5pc2F0aW9uMRIwEAYDVQQLEwlUZXN0IFVuaXQx
EDAOBgNVBAMTB1Rlc3QgQ0EwHhcNOTgwODIwMDA1MDM3WhcNOTkwODIwMDA1MDM3
WjCBnzEfMB0GCSqGSIb3DQEJARYQcmFtb25Ac21zLmNvbS5hdTELMAkGA1UEBhMC
QVUxDDAKBgNVBAgTA05TVzEPMA0GA1UEBxMGU3lkbmV5MSEwHwYDVQQKExhTTVMg
Q29uc3VsdGluZyBHcm91cCBQL0wxGTAXBgNVBAsTEE5ldHdvcmsgU2VydmljZXMx
EjAQBgNVBAMTCVJhbW9uIEFsaTBcMA0GCSqGSIb3DQEBAQUAA0sAMEgCQQDOE7cL
h26Y56e/vZX/WZVhWGXRE2Dj80ot16z5M0KMvi3nnwN3orDmwNrNlgaCu4TVHhnb
y/8UjI/qoZ4q/+2/AgMBAAGjggGwMIIBrDALBgNVHQ8EBAMCADgwEwYDVR0lBAww
CgYIKwYBBQUHAwIwgbIGA1UdIwSBqjCBp4AU8T1Ye5xrTFTBMeDkQrNnnAdXoFGh
faR7MHkxCzAJBgNVBAYTAkFVMRAwDgYDVQQIEwdUZXN0IENBMRYwFAYDVQQHEw1U
ZXN0IExvY2FsaXR5MRowGAYDVQQKExFUZXN0IE9yZ2FuaXNhdGlvbjESMBAGA1UE
CxMJVGVzdCBVbml0MRAwDgYDVQQDEwdUZXN0IENBghBvHlEkoACshBHSN7WYkDBE
MHUGA1UdHwRuMGwwM6AxoC+GLWh0dHA6Ly9HODkwOTU5L0NlcnRTcnYvQ2VydEVu
cm9sbC9UZXN0IENBLmNybDA1oDOgMYYvZmlsZTovL1xcRzg5MDk1OVxDZXJ0U3J2
XENlcnRFbnJvbGxcVGVzdCBDQS5jcmwwCQYDVR0TBAIwADBRBggrBgEFBQcBAQRF
MEMwQQYIKwYBBQUHMAKGNWh0dHA6Ly9HODkwOTU5L0NlcnRTcnYvQ2VydEVucm9s
bC9HODkwOTU5X1Rlc3QgQ0EuY3J0MA0GCSqGSIb3DQEBBAUAA0EAGRroJjwggP5n
812fb1/4/aifi4JqQxgCv5JTg2ocFHvudR924ucrCMWHqbmGW+F0x+jYREnXifyx
+alqFU7Ttg==
-----END CERTIFICATE-----

如今你可以生成客户证书与NT用户帐号之间的映照关系了。在IIS 4.0 Directory Security标签当选择你想要回护的目次,依照
如129页屏幕6所示的 Secure Communications 对话框的选项设置允许权限。


屏幕6

这类允许权限组合设定了对Web会见者无效证书的恳求。在Secure Communications对话框中点击Edit(编纂)来创立客户证书映
射。(你可以生成通配符映照;但我在此只引见单个映照。)肯定你在Account Mappings(帐号映照)对话框当选中了Basic标签,
如屏幕7所示,点击Add(添加)来引入你从清单2中拷贝上去的证书文本文件。


屏幕7

你将看到提醒扣问证书文本文件。输出该文件的途径和文件名,点击OK。在Account Mappings对话框的Basic标签上,为这个映照
指定一个名字,输出响应的需求会见此平安区域的用户的NT帐号名(如IUSR_server等名字),然后输出并确认其NT用户口令。胜利
的映照将如屏幕7所示相仿。

祝贺--你成为CA了

仅此罢了!你已为用户创立了客户证书,捕捉了这些证书写入文本文件,并终究将此证书映照到NT用户帐号上。你的用户如今访
问你的平安收集区域时可以不用利用传统的用户名和口令的机制了。你的用户将会因更简捷的会见体例而乐意,而你也会加倍安
心,由于你的平安收集区是真正平安的。

想法是和程序员的想法不一样的.至于为什么.大家去想一想.跟心理学有关的
因胸联盟 该用户已被删除
沙发
发表于 2015-2-16 00:33:44 | 只看该作者
作为IE上广为流传的动态网页开发技术,ASP以它简单易学博得了广大WEB程序爱好这的青睐,而且它对运行环境和开发品台的不挑剔,以及有大量有效的参考手册,极大的推广了它的发展。
乐观 该用户已被删除
板凳
发表于 2015-2-17 00:08:32 | 只看该作者
ASP也是这几种脚本语言中最简单易学的开发语言。但ASP也是这几种语言中唯一的一个不能很好支持跨平台的语言。  因为ASP脚本语言非常简单,因此其代码也简单易懂,结合HTML代码,可快速地完成网站的应用程序。
灵魂腐蚀 该用户已被删除
地板
发表于 2015-3-3 13:12:32 | 只看该作者
那么,ASP.Net有哪些改进呢?
小魔女 该用户已被删除
5#
发表于 2015-3-4 20:13:32 | 只看该作者
他的语法和设计思路和VB完全相同,导致很多ASP的书都留一句“相关内容请参考VB的相关教材....”更糟糕的是,相当多的ASP教程混合了Javascript,VBscript等等脚本语言,搞的初学者。
爱飞 该用户已被删除
6#
发表于 2015-3-5 06:46:25 | 只看该作者
兴趣爱好,那么你无须学编程,申请一个域名和空间,在网上下载一些免费开源的CMS系统,你不用改代码,只须熟悉它们的后台操作,像office一样简单方便,很快就能建一个站点,很多站长都是这样做的
精灵巫婆 该用户已被删除
7#
 楼主| 发表于 2015-3-11 23:38:47 | 只看该作者
Application:这个存储服务端的数据,如果不清除,会直到web应用程序结束才清除(例如重启站点)
再现理想 该用户已被删除
8#
发表于 2015-3-19 18:31:05 | 只看该作者
跟学别的语言一样,先掌握变量,流程控制语句(就是ifwhileselect)等,函数/过程,数组
活着的死人 该用户已被删除
9#
发表于 2015-3-31 03:58:06 | 只看该作者
封装性使得代码逻辑清晰,易于管理,并且应用到ASP.Net上就可以使业务逻辑和Html页面分离,这样无论页面原型如何改变,业务逻辑代码都不必做任何改动;继承性和多态性使得代码的可重用性大大提高。
兰色精灵 该用户已被删除
10#
发表于 2015-3-31 17:23:05 | 只看该作者
以上是语言本身的弱点,在功能方面ASP同样存在问题,第一是功能太弱,一些底层操作只能通过组件来完成,在这点上是远远比不上PHP/JSP,其次就是缺乏完善的纠错/调试功能,这点上ASP/PHP/JSP差不多。
莫相离 该用户已被删除
11#
发表于 2015-4-13 00:51:42 | 只看该作者
跟学别的语言一样,先掌握变量,流程控制语句(就是ifwhileselect)等,函数/过程,数组
小妖女 该用户已被删除
12#
发表于 2015-4-24 19:54:17 | 只看该作者
如何学好ASP,以前也有人问过,把回答给你转过来看看能否对你有帮助:
若相依 该用户已被删除
13#
发表于 2015-4-27 14:32:25 | 只看该作者
Session:这个存储跟客户端会话过程的数据,默认20分钟失效
变相怪杰 该用户已被删除
14#
发表于 2015-5-6 12:51:36 | 只看该作者
掌握asp的特性而且一定要知道为什么。
不帅 该用户已被删除
15#
发表于 2015-5-8 19:19:58 | 只看该作者
作为IE上广为流传的动态网页开发技术,ASP以它简单易学博得了广大WEB程序爱好这的青睐,而且它对运行环境和开发品台的不挑剔,以及有大量有效的参考手册,极大的推广了它的发展。
只想知道 该用户已被删除
16#
发表于 2015-5-11 00:46:52 | 只看该作者
最近在学asp,不要问我为什么不直接学.net,因为公司网站是asp做的所以有这个需要,卖了本书asp入门到精通,对里面的六大内置对象老是记不住,还有很多属性和方法看的头晕。
小女巫 该用户已被删除
17#
发表于 2015-6-21 12:58:09 | 只看该作者
最近在学asp,不要问我为什么不直接学.net,因为公司网站是asp做的所以有这个需要,卖了本书asp入门到精通,对里面的六大内置对象老是记不住,还有很多属性和方法看的头晕。
深爱那片海 该用户已被删除
18#
发表于 2015-6-26 08:01:58 | 只看该作者
以上是语言本身的弱点,在功能方面ASP同样存在问题,第一是功能太弱,一些底层操作只能通过组件来完成,在这点上是远远比不上PHP/JSP,其次就是缺乏完善的纠错/调试功能,这点上ASP/PHP/JSP差不多。
若天明 该用户已被删除
19#
发表于 2015-7-13 01:37:49 | 只看该作者
完全不知道到底自己学的是什么。最后,除了教程里面说的几个例子,还是什么都不会。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-22 19:54

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表