为站点加上证书之后,访问站点就需要使用 https:// 协议访问了,但前提就是要先去获取一个证书。你可以从证书颁发机构(如 Verisign)获得 基于 Internet 的客户端进行 SSL 通信所需的证书。
但是,如果是为了测试,您可以使用名为 MakeCert.exe 的工具创建一个测试证书。MakeCert.exe 可以从 Microsoft .NET Framework 中获得。(位置在:F:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\Bin)。MakeCert.exe 也可从 Platform SDK 中获得。MakeCert.exe 用于创建 X.509 证书。它为数字签名创建公钥和私钥对,并将其存储在证书文件中。此工具也将密钥对与指定发布服务器相关联,创建将用户指定的名称绑定到密钥对公共部分的 X.509 证书。
若要为主机名 (MyWebServer) 对应的服务器创建 SSL 证书,可以使用下列选项执行 MakeCert:
makecert -r -pe -n CN="MyWebServer" -eku 1.3.6.1.5.5.7.3.1 -ss my -sr localmachine
-sky exchange -sp "Microsoft RSA SChannel Cryptographic Provider" -sy 12
命令行开关
-r
创建自我签署的证书。自我签署的证书是指那些不是由证书颁发机构签署的证书。因为它不是由证书颁发机构签署的,所以可用于 SSL 所需的加密,但不可用于服务器身份验证。
-n
指定服务器名称。此名称必须符合 X.500 标准。最简单的方法是指定带有双引号且前面有 CN= 的名称。
-eku
将一些以逗号分隔的增强型密钥用法对象标识符 (OID) 指定到证书中。对于 SQL Server 2005,需要一个对具有 1.3.6.1.5.5.7.3.1 (szOID_PKIX_KP_SERVER_AUTH) OID 的服务器身份验证有效的 SSL 证书。
-ss
指定保存创建的证书的证书存储区。虽然可以将创建的证书保存到证书存储区的任何位置,但我们建议将证书保存在 my 存储区中。
-sr
指定证书所在的证书存储区。位置既可以是 currentuser (默认),也可以是 localmachine。因为此证书是为服务创建的,所以应将它放置在本地计算机中。
-sky
指定证书密钥类型。此开关的值必须为 signature、exchange 或整数(如 4)。对于 RSA 公钥交换算法,此处必需是 exchange。这是用于加密和解密会话密钥的密钥类型。
-sp
指定 CryptoAPI 提供程序名称。对于为 SQL Server 创建的证书,可以将其设置为 Microsoft RSA SChannel Cryptographic Provider。
-sy
指定 CryptoAPI 提供程序类型。如果提供程序是 Microsoft RSA SChannel Cryptographic Provider,则此开关的值为 12。
其他命令行开关
-b
以 mm/dd/yyyy 格式指定证书有效期的起始时间的日期值。默认值为证书的创建日期。
-e
以 mm/dd/yyyy 格式指定证书有效期的结束时间的日期值。如果无其他设置,则默认值为 12/31/2039 11:59:59 GMT。
示例
下面的示例说明了如何使用 MakeCert 和其他选项创建证书。
makecert -r -pe -n "CN= WebServerName" -b 01/01/2000 -e 01/01/2036
-eku 1.3.6.1.5.5.7.3.1 -ss my -sr localMachine -sky exchange
-sp "Microsoft RSA SChannel Cryptographic Provider" -sy 12
创建证书后,您可以从证书的 MMC 或使用工具(如 CertUtil)来获得证书哈希。使用 CertUtil,可以列出刚刚创建的证书。
C:\>certutil -store "my" "WebServerName"
================ Certificate 2 ================
Serial Number: e302d3a7a831c9884c0dd736f24825e6
Issuer: CN=MySQLServerName
Subject: CN=MySQLServerName
Signature matches Public Key
Root Certificate: Subject matches Issuer
Cert Hash(sha1): d2 2f 9a 7f 18 cb ed 13 a1 3e be e5 32 69 6c 4b ad ba b9 30
Key Container = 956cbc46-f005-4aeb-b521-7c313f2ccd10
Provider = Microsoft RSA SChannel Cryptographic Provider
Encryption test passed
CertUtil: -store command completed successfully.
但是,如果是为了测试,您可以使用名为 MakeCert.exe 的工具创建一个测试证书。MakeCert.exe 可以从 Microsoft .NET Framework 中获得。(位置在:F:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\Bin)。MakeCert.exe 也可从 Platform SDK 中获得。MakeCert.exe 用于创建 X.509 证书。它为数字签名创建公钥和私钥对,并将其存储在证书文件中。此工具也将密钥对与指定发布服务器相关联,创建将用户指定的名称绑定到密钥对公共部分的 X.509 证书。
若要为主机名 (MyWebServer) 对应的服务器创建 SSL 证书,可以使用下列选项执行 MakeCert:
makecert -r -pe -n CN="MyWebServer" -eku 1.3.6.1.5.5.7.3.1 -ss my -sr localmachine
-sky exchange -sp "Microsoft RSA SChannel Cryptographic Provider" -sy 12
命令行开关
-r
创建自我签署的证书。自我签署的证书是指那些不是由证书颁发机构签署的证书。因为它不是由证书颁发机构签署的,所以可用于 SSL 所需的加密,但不可用于服务器身份验证。
-n
指定服务器名称。此名称必须符合 X.500 标准。最简单的方法是指定带有双引号且前面有 CN= 的名称。
-eku
将一些以逗号分隔的增强型密钥用法对象标识符 (OID) 指定到证书中。对于 SQL Server 2005,需要一个对具有 1.3.6.1.5.5.7.3.1 (szOID_PKIX_KP_SERVER_AUTH) OID 的服务器身份验证有效的 SSL 证书。
-ss
指定保存创建的证书的证书存储区。虽然可以将创建的证书保存到证书存储区的任何位置,但我们建议将证书保存在 my 存储区中。
-sr
指定证书所在的证书存储区。位置既可以是 currentuser (默认),也可以是 localmachine。因为此证书是为服务创建的,所以应将它放置在本地计算机中。
-sky
指定证书密钥类型。此开关的值必须为 signature、exchange 或整数(如 4)。对于 RSA 公钥交换算法,此处必需是 exchange。这是用于加密和解密会话密钥的密钥类型。
-sp
指定 CryptoAPI 提供程序名称。对于为 SQL Server 创建的证书,可以将其设置为 Microsoft RSA SChannel Cryptographic Provider。
-sy
指定 CryptoAPI 提供程序类型。如果提供程序是 Microsoft RSA SChannel Cryptographic Provider,则此开关的值为 12。
其他命令行开关
-b
以 mm/dd/yyyy 格式指定证书有效期的起始时间的日期值。默认值为证书的创建日期。
-e
以 mm/dd/yyyy 格式指定证书有效期的结束时间的日期值。如果无其他设置,则默认值为 12/31/2039 11:59:59 GMT。
示例
下面的示例说明了如何使用 MakeCert 和其他选项创建证书。
makecert -r -pe -n "CN= WebServerName" -b 01/01/2000 -e 01/01/2036
-eku 1.3.6.1.5.5.7.3.1 -ss my -sr localMachine -sky exchange
-sp "Microsoft RSA SChannel Cryptographic Provider" -sy 12
创建证书后,您可以从证书的 MMC 或使用工具(如 CertUtil)来获得证书哈希。使用 CertUtil,可以列出刚刚创建的证书。
C:\>certutil -store "my" "WebServerName"
================ Certificate 2 ================
Serial Number: e302d3a7a831c9884c0dd736f24825e6
Issuer: CN=MySQLServerName
Subject: CN=MySQLServerName
Signature matches Public Key
Root Certificate: Subject matches Issuer
Cert Hash(sha1): d2 2f 9a 7f 18 cb ed 13 a1 3e be e5 32 69 6c 4b ad ba b9 30
Key Container = 956cbc46-f005-4aeb-b521-7c313f2ccd10
Provider = Microsoft RSA SChannel Cryptographic Provider
Encryption test passed
CertUtil: -store command completed successfully.