Set AUTH_RULE_IDENTITY_LOOSE for rightid=%<identity>
This commit is contained in:
@@ -662,6 +662,18 @@ Can be an IP address, a fully-qualified domain name, an email address, or
|
|||||||
a keyid. If
|
a keyid. If
|
||||||
.B leftcert
|
.B leftcert
|
||||||
is configured the identity has to be confirmed by the certificate.
|
is configured the identity has to be confirmed by the certificate.
|
||||||
|
|
||||||
|
For IKEv2 and
|
||||||
|
.B rightid
|
||||||
|
the prefix
|
||||||
|
.B %
|
||||||
|
in front of the identity prevents the daemon from sending IDr in its IKE_AUTH
|
||||||
|
request and will allow it to verify the configured identity against the subject
|
||||||
|
and subjectAltNames contained in the responder's certificate (otherwise it is
|
||||||
|
only compared with the IDr returned by the responder). The IDr sent by the
|
||||||
|
initiator might otherwise prevent the responder from finding a config if it
|
||||||
|
has configured a different value for
|
||||||
|
.BR leftid .
|
||||||
.TP
|
.TP
|
||||||
.BR leftid2 " = <id>"
|
.BR leftid2 " = <id>"
|
||||||
identity to use for a second authentication for the left participant
|
identity to use for a second authentication for the left participant
|
||||||
|
|||||||
@@ -377,6 +377,7 @@ static auth_cfg_t *build_auth_cfg(private_stroke_config_t *this,
|
|||||||
char *auth, *id, *pubkey, *cert, *ca, *groups;
|
char *auth, *id, *pubkey, *cert, *ca, *groups;
|
||||||
stroke_end_t *end, *other_end;
|
stroke_end_t *end, *other_end;
|
||||||
auth_cfg_t *cfg;
|
auth_cfg_t *cfg;
|
||||||
|
bool loose = FALSE;
|
||||||
|
|
||||||
/* select strings */
|
/* select strings */
|
||||||
if (local)
|
if (local)
|
||||||
@@ -419,6 +420,11 @@ static auth_cfg_t *build_auth_cfg(private_stroke_config_t *this,
|
|||||||
ca = other_end->ca2;
|
ca = other_end->ca2;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (id && *id == '%' && !streq(id, "%any"))
|
||||||
|
{ /* has only an effect on rightid/2 */
|
||||||
|
loose = !local;
|
||||||
|
id++;
|
||||||
|
}
|
||||||
|
|
||||||
if (!auth)
|
if (!auth)
|
||||||
{
|
{
|
||||||
@@ -470,6 +476,10 @@ static auth_cfg_t *build_auth_cfg(private_stroke_config_t *this,
|
|||||||
if (identity->get_type(identity) != ID_ANY)
|
if (identity->get_type(identity) != ID_ANY)
|
||||||
{
|
{
|
||||||
cfg->add(cfg, AUTH_RULE_IDENTITY, identity);
|
cfg->add(cfg, AUTH_RULE_IDENTITY, identity);
|
||||||
|
if (loose)
|
||||||
|
{
|
||||||
|
cfg->add(cfg, AUTH_RULE_IDENTITY_LOOSE, TRUE);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user