在配置IIS的HTTPS和IE客户端的证书时,我们经常出错,本文就是通过在实际生产环境中配置SSL的过程,让您看看您可能会错在哪里?
当我们在企业需要WEB发布较为保密的数据时,我们一般把IIS 配置成HTTPS的模式。同时,如果我们只希望企业内部人员进行访问而又不希望进行登录时,我们可以在客户端上配置“浏览器证书”(根CA)或“用户证书”(企业CA),具体的做法可以分为如下几步:
1、通过Windows 2003 安装 证书CA服务器 功能。
在这一步容易出错的主要是,安装CA证书服务时,没有安装同步安装CA服务器的IIS功能,这样会导致无法通过浏览器来访问,
即: http://CA_Server/CertSRV,打不开。
解决办法是通过命令行
"certutil -vroot"
就可以自动给IIS安装上相应的WEB功能,以给其它机器提供CA服务。
2、 通过WEB服务器的IIS里的证书申请功能,向CA申请一个服务器证书,其作用是“验证远程服务器的身份”。
在一步容易出错的主要问题是,在申请证书时通用名称或是好记的名称里,我们要加上WEB服务器的URL,最好内部URL和外部URL要相同,如:www.boc.cn
3、申请完毕后在IIS中安装,只要“目录安全性”的证书框中点击“编辑”勾上“要求安全通道(SSL)”,就OK了。
这一步容易出错的是,如何在生产环境中,CA服务器和WEB服务器不是同一台机器,必须让WEB服务器和客户端的PC机都“信任”CA服务器,可以通过在WEB服务器或是PC机客户端中访问CA的WEB
http://CA_Server/CertSRV/Certcarc.asp
中的“请安装CA证书链”,来完成。
4、客户端访问CA的WEB完成如下步:申请“WEB浏览器证书”或是“用户”证书-到CA服务器用MMC颁布-客户端通过IE再安装证书。
填写:大家怕错都会填上国家什么的,其实只要写一个姓名,就好。
类型:在访问CA的WEB申请时,最好,打开“更多选择”和“高级证书申请”,“好记的名称”一栏填上WEB服务器的URL,如www.boc.cn
请注意:在申请的时候就要决定这个证书的私钥是不是可以导出的。所以,如果这个证书,你希望别人也用,那么你申请时就要勾上这个选项,否则只能重申请。
5、在WEB服务器的IIS中,勾上“要求客户端证书”,就可以实现双向的SSL认证了。
在测试环境是这样,但是生产环境,客户端IE总是显示SSL服务器认为“证书吊销”的错误。
大家都认为,只要客户端证书与服务器证书的颁发机构是一样的, 就OK了。 其实大家都错了。
一旦打上了这个勾,一定一定要请你确认你客户端证书内的“CRL分发点”字段,内有2个URL,起码有一个URL对于开启SSL的IIS来说是可以访问的。
在生产环境,CA和SSL WEB不总是在一起,并且由于DNS和内部名称的关系,这个“CRL分发点”URL对于IIS服务器来说,并不是可以访问的。
所以80%的SSL问题其实是由于这个URL对于IIS来说访问不了。
最后,如果你是初学者还没有碰到这个问题,请你先先看看下面的文章,如何碰到问题,再来看看本文。
IIS客户端证书访问配置 http://www.cnblogs.com/chnking/archive/2008/08/18/1270063.html
和如何在客户端使用证书连接WEB服务器,有了相当详细的教程。然而,在企业实际的生产网络中
本文链接
一、 前言
一致的命名模式是托管类库中可预知性与可发现性最重要的元素之一。对这些命名指南广泛的使用和理解将消除许多最常见的用户问题。本主题提供 .NET Framework 类型的命名指南。对于每个类型,还应该注意关于大写样式、区分大小写和措词的一些通用规则。
二、 命名指南
二.1 大写样式
使用下面的三种大写标识符约定。
二.1.1 Pascal 大小写
将标识符的首字母和后面连接的每个单词的首字母都大写。可以对三字符或更多字符的标识符使用 Pascal 大小写。例如:
BackColor
二.1.2 Camel 大小写
标识符的首字母小写,而每个后面连接的单词的首字母都大写。例如:
backColor
二.1.3 大写
标识符中的所有字母都大写。仅对于由两个或者更少字母组成的标识符使用该约定。例如:
System.IO
System.Web.UI
可能还必须大写标识符以维持与现有非托管符号方案的兼容性,在该方案中所有大写字母经常用于枚举和常数值。一般情况下,在使用它们的程序集之外这些字符应当是不可见的。
下表汇总了大写规则,并提供了不同类型的标识符的示例。
标识符
大小写
示例
类
Pascal
AppDomain
枚举类型
Pascal
ErrorLevel
枚举值
Pascal
FatalError
事件
Pascal
ValueChange
异常类
Pascal
WebException
注意 总是以 Exception 后缀结尾。
只读的静态字段
Pascal
RedValue
接口
Pascal
IDisposable
注意 总是以 I 前缀开始。
方法
Pascal
ToString
命名空间
Pascal
System.Drawing
参数
Camel
typeName
属性
Pascal
BackColor
受保护的实例字段
Camel
redValue
注意 很少使用。属性优于使用受保护的实例字段。
公共实例字段
Pascal
RedValue
注意 很少使用。属性优于使用公共实例字段。
二.2 区分大小写
为了避免混淆和保证跨语言交互操作,请遵循有关区分大小写的使用的下列规则:
l 不要使用要求区分大小写的名称。对于区分大小写和不区分大小写的语言,组件都必须完全可以使用。不区分大小写的语言无法区分同一上下文中仅大小写不同的两个名称。因此,在创建的组件或类中必须避免这种情况。
l 不要创建仅是名称大小写有区别的两个命名空间。例如,不区分大小写的语言无法区分以下两个命名空间声明。
namespace ee.cummings;
namespace Ee.Cummings;
l 不要创建具有仅是大小写有区别的参数名称的函数。下面的示例是不正确的。
void MyFunction(string a, string A)
l 不要创建具有仅是大小写有区别的类型名称的命名空间。在下面的示例中,Point p 和 POINT p 是不适当的类型名称,原因是它们仅在大小写方面有区别。
System.Windows.Forms.Point p
System.Windows.Forms.POINT p
l 不要创建具有仅是大小写有区别的属性名称的类型。在下面的示例中,int Color 和 int COLOR 是不适当的属性名称,原因是它们仅在大小写方面有区别。
int Color {get, set}
int COLOR {get, set}
l 不要创建具有仅是大小写有区别的方法名称的类型。在下面的示例中,calculate 和 Calculate 是不适当的方法名称,原因是它们仅在大小写方面有区别。
void calculate()
void Calculate()
二.3 缩写
为了避免混淆和保证跨语言交互操作,请遵循有关区缩写的使用的下列规则:
l 不要将缩写或缩略形式用作标识符名称的组成部分。例如,使用 GetWindow,而不要使用 GetWin。
l 不要使用计算机领域中未被普遍接受的缩写。
l 在适当的时候,使用众所周知的缩写替换冗长的词组名称。例如,用 UI 作为 User Interface 的缩写,用 OLAP 作为 On-line Analytical Processing 的缩写。
l 在使用缩写时,对于超过两个字符长度的缩写,请使用 Pascal 大小写或 Camel 大小写。例如,使用 HtmlButton 或 htmlButton。但是,应当大写仅有两个字符的缩写,如,System.IO,而不是 System.Io。
l 不要在标识符或参数名称中使用缩写。如果必须使用缩写,对于由多于两个字符所组成的缩写请使用 Camel 大小写,虽然这和单词的标准缩写相冲突。
二.4 措词
避免使用与常用的 .NET Framework 命名空间重复的类名称。例如,不要将以下任何名称用作类名称:System、Collections、Forms 或 UI。有关 .NET Framework 命名空间的列表,请参见类库。
另外,避免使用和以下关键字冲突的标识符。
AddHandler
AddressOf
Alias
And
Ansi
As
Assembly
Auto
Base
Boolean
ByRef
Byte
ByVal
Call
Case
Catch
CBool
CByte
CChar
CDate
CDec
CDbl
Char
部署.net下的windows服务
方法一:
(1)、建立一个新的windows服务项目Server1
(2)、打开Service1代码视图,找到OnStart部分,加入代码
(3)、切换到设计视图,右键-添加安装程序
(4)、切换到新生成的ProjectInstaller.cs设计视图,找到serviceProcessInstaller1对Account属性设置为LocalSystem,对serviceInstaller1的ServiceName属性设置为Server1(服务的名字),StartType属性设置为Automatic(系统启动的时候自动启动服务)
(5)、关闭刚才的项目。
(6)、建立一个新的安装项目ServerSetup(我们为刚才那个服务建立一个安装项目)
(7)、右键-添加-项目输出-主输出-选择Service1-确定
(8)、右键-视图-自定义操作-自定义操作上右键-添加自定义操作-打开应用程序文件夹-选择刚才那个主输出-确定
(9)、重新生成这个安装项目-右键-安装
(10)、在服务管理器中(我的电脑-右键-管理-服务和应用程序-服务)找到Server1服务,启动服务
使用安装部署一般win程序的方法去安装部署windows服务的话,得到将是一个win程序的安装,卸载的时候必须通过控制面板进行卸载。
方法二:
windows 服务安装bat文件如下 必须放在安装文件目录下(一般是bin/debug/)
安装:
%SystemRoot%\Microsoft.NET\Framework\v4.0.30319\installutil.exe windows服务应用程序名.exe
Net Start 服务名
sc config 服务名= auto
pause(这个是显示调试信息的)
卸载如下:
%SystemRoot%\Microsoft.NET\Framework\v4.0.30319\installutil.exe /u windows服务应用程序名.exe
或者是 sc delete 服务名
本文链接