Windows Azure支持两种模式的VPN接入:
- Site to Site,接入端需要有固定的公网IP地址,用于连接局域网和Windows Azure的虚拟网络。
- Point to Site,客户端使用Windows SSTP拨号,只支持Windows操作系统。用于开发测试和运维。
通过Point to Site VPN连接到Windows Azure,可以有效的提升系统安全——减少对外开放的端口数量,只保留应用程序的对外服务端口而关闭系统维护端口。例如:一个Web Server,只开放80或者443端口即可,SSH(22)或者RDP(3389)等维护端口就完全不需要对外开放了。当然,即便对外开放了维护端口,也可以通过设置ACL来确保访问安全。但是,ACL是基于IP地址的,特别是在国内复杂的网络环境中,设置基于IP地址的ACL并非是一件容易的事情——用户通过好多的层NAT上网,一个IP地址可能被N多用户共享。如果遇到突发情况,需要在家或者在办公室之外连接到Windows Azure进行系统维护,ACL就无能为力了。
首先,我们在虚拟网络上创建一个动态路由VPN网关。具体操作请参见Windows Azure的说明文档,在此不再赘述。VPN网关创建时间比较长,至少要20分钟才能ready。在等待的过程中,我们来创建Point to Site VPN所需的证书。
创建证书需要使用“makecert”,如果已经安装了Visual Studio,那么可以直接通过Visual Studio命令行来使用“makecert”。没有安装Visual Studio也别担心,为了制作一个数字证书而安装一个“巨无霸”开发工具显然是划不来的。其实“makecert”只要三个文件就可以运行了。需要的同学可以点击这里下载。
第一步,制作root证书:
makecert -sky exchange -r -n "CN=[root证书名称]" -pe -a sha1 -len 2048 -ss My "[root证书文件名].cer"
建议将root证书长期保留,除了Point to Site VPN,还有很多地方用得上。默认root证书有效期到2039年(差不多能用到退休)。执行上述命令后,当前目录下会生成一个"[root证书文件名].cer"文件,将这个文件上传到Windows Azure虚拟网络中。
第二步,使用root证书签发客户端证书:
makecert.exe -n "CN=[客户端证书名称]" -pe -sky exchange -m 3 -ss My -in "[root证书名称]" -is my -a sha1
其中,“-m”参数是指定客户端证书的有效月数,建议不要超过3个月,这样可以通过重新签发客户端证书来增强安全性,特别是在多人使用的情况下。当然,也可以为每个使用VPN的用户签发一个独立的客户端证书。
当VPN网关创建完成,root证书也顺利上传后,在虚拟网络的dashboard页就可以下载到VPN客户端的安装包了,注意请根据自己的操作系统选择正确的版本:32位或者64位。运行这个安装包,就会在本地创建一个新的网络连接,点击新创建的网络连接,就可以建立起到Windows Azure虚拟网络的VPN连接!
如果要将客户端证书分发给多个用户使用,那么在本地执行“certmgr.msc”,找到“个人”证书存储区,将客户端证书连同私钥一起导出为".pfx"文件后供其他用户在本地(用户自己的计算机上)执行客户端证书导入(双击".pfx"即可)。客户端证书正确导入后,再运行VPN客户端安装包创建新的VPN连接。注意:导出客户端证书时,需要设置一个导入密码,请将将此密码告知需要导入客户端证书的用户。
我们来总结一下Point to Site VPN的特性:
- Windows Azure只能给Point to Site VPN分配一个C类网段,因此,同时拨入Point to Site VPN的客户端数量是有限制的,理论上不超过250个。
- 客户端只支持Windows操作系统,Mac OS X和Linux无法使用。
- 客户端连接到VPN后,不会改变本地网络的出口路由(连接到Internet的路由),用Point to Site VPN连接国际版Microsoft Azure进行FQ是肯定没戏的。
- 客户端建立VPN连接时不需要使用用户名和密码来验证身份,因此客户端证书就是唯一的身份验证凭据。
- 如果出现客户端证书泄漏,可以在虚拟网络中将上传的root证书删除。这样所有使用该root证书签发的客户端证书都会失效。