Active Directory as PKI
Nikita Koshikov
koshikov at gmail.com
Tue Jun 1 13:24:32 CEST 2010
On Thu, 20 May 2010 10:43:14 +0300
Nikita Koshikov wrote:
> Hello freeradius users/admins,
>
>
> I'm trying to implement EAP-TLS authorization with freeradius and Active Directory Certificates Service, but I'm stuck here...
>
> With keys/certificates, generated with freeradius makefile(/etc/raddb/certs) everything is working fine. Here is the hierarchy of keys generated by freeradius:
>
> Ca.crt(+ca.key)
> ||
> server.crt(+servers.key) //issuer ca.crt
> ||
> client1.crt
> client2.crt
> ..... //issuer server.crt
>
> Apart from this scheme, Active Directory stores certificates in a way:
>
> Ca.crt(key in AD and cannot used by freeradius)
> ||
> sub_ca.crt(key in AD and cannot used by freeradius) //issuer ca.crt
> ||
> server.crt(+key) //issuer sub_ca.crt (this is for private_key_file and certificate_file in freeradius config)
> ||
> client1.crt
> client2.crt
> ..... //issuer sub_ca.crt
> I'm concatenate ca.crt file with sub_ca.crt, openssl verify produces "OK".
> # openssl verify -CAfile ca.crt clent.crt
> clent.crt: OK
>
> But trying to authenticate from client I got error - unknown_ca. I have attached full debug log.
> client(wpa_supplient) -> wifi-access(linksys with dd-wrt) -> server(freeradius-2.1.7)
> wpa_supplient.conf:
> network={
> ssid="work"
> proto=RSN
> key_mgmt=WPA-EAP
> pairwise=CCMP
> eap=TLS
> identity="radius"
> ca_cert="/home/work/ca.crt"
> client_cert="/home/work/wifi_client.crt"
> private_key="/home/work/wifi_client.key"
> private_key_passwd=""
> priority=1
> }
>
> freeradius relevant section:
> tls {
> rsa_key_exchange = no
> dh_key_exchange = yes
> rsa_key_length = 512
> dh_key_length = 512
> verify_depth = 0
> pem_file_type = yes
> private_key_file = "/etc/raddb/certs/win/server.key" //generated from sub_ca
> certificate_file = "/etc/raddb/certs/win/server.crt" //generated from sub_ca
> CA_file = "/etc/raddb/certs/win/ca.crt" //concatenated ca.crt + sub_ca.crt from windows store
> dh_file = "/etc/raddb/certs/dh" //generated by makefile
> random_file = "/etc/raddb/certs/random" //generated by makefile
> fragment_size = 1024
> include_length = yes
> check_crl = no
> cipher_list = "DEFAULT"
> }
>
> Note:
> Server.crt and client.crt has all necessary extensions(OIDs) - TLS Web Server Authentication and TLS Web Client Authentication
>
> My question - is it able to organize such scheme - freeradius + windows certificate center? Is client.crt MUST be issued by server.crt or they both MAY be issued by higher level ca, like Active Directory does?
>
> If this has been discussed before - please, point me in right direction.
Anyone ?
More information about the Freeradius-Users
mailing list