Cisco ASAのssl-vpnをいろいろ直した。
今まではVPN接続後、ASAのLAN側(inside)のみアクセスしていたが、VPN経由でインターネット(outside)にアクセスできるようにした。そして、ASAのLAN側にいる端末は、ASAをGWとして普通にインターネットアクセスする。VPNクライアントはinsideにもアクセスできるようにする。
NATを以下のようにすればよい。
nat (outside,inside) source static VPN_POOL2 NAT_POOL2 destination static INSIDE_NW INSIDE_NW
nat (outside,outside) source dynamic VPN_POOL2 interface
nat (inside,outside) source dynamic any interface outside
1行目は、outside→inside、送信元:VPN、宛先:insideの場合。
送信元はinsideのサブネットに含まれるプールにNATし、宛先はそのまま。
2行目は、outside→outside、送信元:VPN、宛先any、outsideインターフェースにPAT
3行目は、inside→outside、ASAのLANからWANのPAT
1行目はVPNクライアントがinside に入るときにNATを除外する設定である。送信元をNAT_POOL2にNATしているが、これをしなくても、ASAのinsideには届く。ただし、その通信がVPNクライアントに戻るには、insideにある装置にvpnプールセグメント宛のルーティングが必要になる。それがいやだったのでNATしている。ただしNATするときにINSIDEのインターフェースアドレスにするとうまくいかない。
ASAの証明書の期限が切れていたのでついでに更新したが手こずった。 クライアント(iPhone)にCA証明書をインストールするにはCA証明書を.cerなどの拡張子にしてメールなどで添付すればよい。秘密鍵は不要。CA:TRUEのフラグがない証明書はiphoneでverifiedにならず、信頼する対象にならない。
CA:TRUEにするには、openssl.cnfに basicConstraints = CA:TRUE を設定すればよいが、その設定をしたセクションが反映するように明示していするなどしないといけない。
-extensions v3_ca を付けるとか。
署名したら証明書に CA:TRUEがついているか、確認する。(CSRではわからない)
# openssl req -new -x509 -days 3650 -key ./private/cakey.pem -out ca251212.crt -config /etc/pki/tls/openssl.cnf -extensions v3_ca
# openssl x509 -in ./ca251212.crt -text -noout | grep -A1 "Basic Constraints"
X509v3 Basic Constraints: critical
CA:TRUE