[strongSwan] Multiple CA certs - why are all (not one) requested from a client?

Kostya Vasilyev kman at fastmail.com
Thu Mar 14 14:36:16 CET 2019


A quick question about CA certs in the context of cert based auth.

I've got two tunnels on same server like this, using different certificates (all of them, for each connection are different from the other connection's). Reason: one client is strongSwan and supports EC certs, the other client only does RSA.

This one uses RSA certs:

connections {
	rsa_tunnel {
		local_addrs  = 139.0.0.1
		remote_addrs = 89.0.0.1
		version = 2
		proposals = aes128-sha256-ecp256

		local {
			auth = pubkey
			certs = lintun_server.crt
		}
		remote {
			auth = pubkey
			cacerts = lintun_CA.crt
		}
		children {
			xxx {
				local_ts  = dynamic[gre]
				remote_ts = dynamic[gre]

				mode = transport
				esp_proposals = aes128-sha256-ecp256
			}
		}
	}
}

And this one uses EC certs:

connections {
	ec_tunnel {
		local_addrs  = 139.0.0.1
		remote_addrs = 172.0.0.1
		version = 2
		proposals = aes128-sha256-ecp256

		local {
			auth = pubkey
			certs = ec_tunnel_server.crt
		}
		remote {
			auth = pubkey
			cacerts = ec_tunnel_CA.crt
		}
		children {
			zzz {
				mode = transport
				esp_proposals = aes128gcm128-x25519
			}
		}
	}
}

Now when strongSwan negotiates authentication, I see that it asks either client for either CA:

Mar 14 16:28:40 charon-systemd[12802]: sending cert request for "C=RU, O=RsaTunnel, OU=CA"
Mar 14 16:28:40 charon-systemd[12802]: sending cert request for "C=RU, O=EcTunnel, OU=CA"

It seems to me that at this point the server should already know which connection "block" it's dealing with - and so which CA cert it will need from the client.

One CA cert, not all CA certs in all configured connections, right?

Also does the above mean that either client can authenticate through either CA cert, even the other connection's?

-- 
Kostya Vasilyev
kman at fastmail.com


More information about the Users mailing list