blob: 96aa005c0eb9ff64861c020f24bcdfa8bf8b4b58 [file] [log] [blame]
# Copyright (c) 2011 The Chromium OS Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
#
# An example of how to set up a certificate-based IPSec VPN from the Client
# (DUT), through the Router to to the Server.
#
{ "name" : "VPNIPsecCertificates",
"steps":[
# Create WiFi connection from Client to Router.
[ "create", { "type" : "hostap" } ],
[ "config", { "channel" : "2412", "mode" : "11b" } ],
[ "connect", { "security" : "none" } ],
[ "install_files", {
"system" : "server",
"files" : {
"/etc/ipsec.d/cacerts/ca.crt" : site_eap_certs.ca_cert_1,
"/etc/ipsec.d/certs/server.crt" : site_eap_certs.server_cert_1,
"/etc/ipsec.d/private/server.key" :
site_eap_certs.server_private_key_1
}}],
[ "vpn_server_config", { "kind" : "l2tpipsec-cert",
"replacements" : { "@plutodebug@" : "all" }}],
# Reset the TPM to a known state.
[ "initialize_tpm", { } ],
# Install the CA certificate into the TPM. This will be used to generate
# the client certificate chain while authenticating to the server.
[ "install_tpm_object", { "data" : site_eap_certs.ca_cert_1,
"id" : site_eap_certs.ca_cert_1_tpm_key_id,
"object_type" : "cert" } ],
# Install the client certificate into the TPM.
[ "install_tpm_object", { "data" : site_eap_certs.client_cert_1,
"id" : site_eap_certs.cert_1_tpm_key_id,
"object_type" : "cert" } ],
# Install the client private key. Note that this key ID must be the
# same as the cert ID above due to limitations on how VPN services are
# configured in shill and vpn-manager.
[ "install_tpm_object", { "data" : site_eap_certs.client_private_key_1,
"id" : site_eap_certs.cert_1_tpm_key_id,
"object_type" : "key" } ],
# Create an NSS database that contains the server certificate. This
# will be used to verify the certificate on the remote server.
[ "initialize_nss" ],
[ "install_nss_certificate", { "data": site_eap_certs.ca_cert_1,
"id" : site_eap_certs.cert_1_nss_cert_id } ],
# Launch the VPN Client.
[ "vpn_client_connect", {
"kind" : "l2tpipsec-cert",
"password" : "password",
"chapuser" : "chapuser",
"chapsecret" : "chapsecret",
"certid" : site_eap_certs.cert_1_tpm_key_id,
"keyid" : site_eap_certs.key_1_tpm_key_id,
"cacertid" : site_eap_certs.cert_1_nss_cert_id
}],
# Verify the client is connected to the server
[ "client_ping", { "ping_ip" : "192.168.1.99", # IP in xl2tpd.conf.
"count" : "10" } ],
[ "vpn_client_kill" ], # Shut down the VPN Client.
[ "vpn_server_kill" ], # Shut down the VPN Server.
[ "disconnect" ] # Disconnect WiFi setup.
],
}