Hello misc!

Just posting in case someone else has come across this problem and save them 
some time.

I've been trying to get ikev2 to work between two 6.1 machines to replace our 
isakmpd + ipsec setup and was getting nowhere.

the iked man page says:

   iked supports mutual authentication using RSA or ECDSA public keys and
    X.509 certificates.  See the PUBLIC KEY AUTHENTICATION section below and
    PKI AND CERTIFICATE AUTHORITY COMMANDS in ikectl(8) for more information
    about creating and maintaining the public key infrastructure.

but as I found out it does not work with the RSA keys generated on first boot (even if you delete them and reboot to re-create them) To be clear the keys I refer to are /etc/iked/local.pub and /etc/iked/private/local.key And the relevant part from /etc/rc # grep iked /etc/rc # Generate keys for isakmpd, iked and sshd if they don't exist yet.
       local _iked_key=/etc/iked/private/local.key
       local _iked_pub=/etc/iked/local.pub
               echo -n "openssl: generating isakmpd/iked RSA keys... "
       if [[ ! -f $_iked_key ]]; then
               cp $_isakmpd_key $_iked_key
               chmod 600 $_iked_key
               cp $_isakmpd_pub $_iked_pub
start_daemon iscsid isakmpd iked sasyncd ldapd npppd

The error I was getting was: ikev2_recv: IKE_SA_INIT request from initiator aa.aa.aa.aa:500 to bb.bb.bb.bb:500 policy 'policy6' id 0, 510 bytes
ikev2_msg_send: IKE_SA_INIT response from bb.bb.bb.bb:500 to aa.aa.aa.aa:500 
msgid 0, 451 bytes
ikev2_recv: IKE_AUTH request from initiator aa.aa.aa.aa:500 to bb.bb.bb.bb:500 
policy 'policy6' id 1, 784 bytes
ikev2_dispatch_cert: peer certificate is invalid
ikev2_msg_send: IKE_AUTH response from bb.bb.bb.bb:500 to aa.aa.aa.aa:500 msgid 
1, 80 bytes

I then deleted the keys and generated new ECDSA

openssl ecparam -name secp256k1 -out local.key -genkey -> place that under /etc/iked/private/local.pub openssl ec -in local.key -pubout > local.pub and place it under /etc/iked/local.pub and the public key openssl ec -in local.key -pubout > local.pub and place that under /etc/iked/local.pub copy the public keys on hostA and hostB under /etc/iked/pubkeys/ipv4/aa.aa.aa.aa and /etc/iked/pubkeys/ipv4/bb.bb.bb.bb accordingly
started iked -dv (manually to help me debug) on both nodes and can see from the 
output that it worked:

# iked -dv
ikev2 "hostA" active esp inet from aa.aa.aa.aa to bb.bb.bb.bb local aa.aa.aa.aa peer 
bb.bb.bb.bb ikesa enc aes-256,aes-192,aes-128,3des prf hmac-sha2-256,hmac-sha1 auth 
hmac-sha2-256,hmac-sha1 group modp2048,modp1536,modp1024 childsa enc aes-256,aes-192,aes-128 auth 
hmac-sha2-256,hmac-sha1 srcid aa.aa.aa.aa dstid bb.bb.bb.bb lifetime 10800 bytes 536870912 ecdsa256 
tag "ipsec_tag"

ikev2_recv: IKE_SA_INIT request from initiator bb.bb.bb.bb:500 to 
aa.aa.aa.aa:500 policy 'hostA' id 0, 510 bytes
ikev2_msg_send: IKE_SA_INIT response from aa.aa.aa.aa:500 to bb.bb.bb.bb:500 
msgid 0, 451 bytes

ikev2_recv: IKE_AUTH request from initiator bb.bb.bb.bb:500 to aa.aa.aa.aa:500 
policy 'hostA' id 1, 384 bytes
ikev2_msg_send: IKE_AUTH response from aa.aa.aa.aa:500 to bb.bb.bb.bb:500 msgid 
1, 336 bytes
sa_state: VALID -> ESTABLISHED from bb.bb.bb.bb:500 to aa.aa.aa.aa:500 policy 
'hostA'


and the ipsecctl -sa output (trimmed)

# ipsecctl -sa
FLOWS:
flow esp in from aa.aa.aa.aa to bb.bb.bb.bb peer aa.aa.aa.aa srcid 
IPV4/bb.bb.bb.bb dstid IPV4/aa.aa.aa.aa type use
flow esp out from bb.bb.bb.bb to aa.aa.aa.aa peer aa.aa.aa.aa srcid 
IPV4/bb.bb.bb.bb dstid IPV4/aa.aa.aa.aa type require
flow esp out from ::/0 to ::/0 type deny

SAD:
esp tunnel from bb.bb.bb.bb to aa.aa.aa.aa spi 0x5f6fd9cc auth hmac-sha2-256 
enc aes-256
esp tunnel from aa.aa.aa.aa to bb.bb.bb.bb spi 0xa8a4dd4c auth hmac-sha2-256 
enc aes-256


I hope this will help someone and of course let me know if I missed something 
obvious.

Cheers Doros Eracledes

Reply via email to