目标
把ASA设置为一个VPN接入点,挂在现有的网关路由器下面,让AnyConnect连入的客户端能够正常访问本地内网和公网。防火墙设为全部放通。
示例中使用以下配置:
- 现有的内网:10.0.0.0/24
- 网关:10.0.0.1
- ASA:10.0.0.2
- AnyConnect客户端地址池:10.0.253.0/24, fd00::/64
把ASA设置为一个VPN接入点,挂在现有的网关路由器下面,让AnyConnect连入的客户端能够正常访问本地内网和公网。防火墙设为全部放通。
示例中使用以下配置:
准备一个私钥(.pem)和对应的证书(.crt)文件。注意证书里面只能有私钥对应的那个证书,不应该有证书链。需要证书链的话单独放一个文件里面。
先用OpenSSL把它转成PKCS#12格式。
1 |
openssl pkcs12 -export -out asa.example.com.pfx -inkey asa.example.com.pem -in asa.example.com.crt -CAfile cert-chain.crt |
输入任意密码两次。如果是用ASDM导入证书的话,就可以直接选中生成的pfx文件导入了。如果要从命令行导入的话继续往下看。
然后Base64一下:
1 |
openssl base64 -in asa.example.com.pfx -out asa.example.com.pfx.base64 |
导入ASA:
1 2 3 4 5 6 7 8 9 10 |
Type help or '?' for a list of available commands. asa> enable Password: asa# configure terminal asa(config)# crypto ca import 证书名 pkcs12 密码 Enter the base 64 encoded pkcs12. End with the word "quit" on a line by itself: <粘贴 base64 过的文件> quit INFO: Import PKCS12 operation completed successfully |
换上新的证书:
1 2 3 4 |
asa(config)# ssl trust-point newcert inside asa(config)# ssl trust-point newcert outside asa(config)# no crypto ikev2 remote-access trustpoint oldcert asa(config)# crypto ikev2 remote-access trustpoint newcert |
删掉原来的证书:
1 |
asa(config)# no crypto ca trustpoint oldcert |
然后记得把根证书导入一下。ASDM的话在Device Management -> Certificate Management -> CA Certificates里面导入PEM格式的证书链即可,会自动应用上。
从ASA的设计来看,AnyConnect隧道不像是一个传统的Point-to-Point或Site-to-Site VPN隧道,而更像是一个IPSec Transform规则。每个客户端建立起隧道以后,ASA会为其动态生成一条路由,该路由具有如下特征: