如何生成 EAP-TLS Wi-Fi 证书?

如何生成 EAP-TLS Wi-Fi 证书?

我想将 Linux 计算机连接到 WPA2 Enterprise Wi-Fi(由我管理)。我使用 OpenSSL 创建的证书适用于 Android 和 iOS 设备,但我无法弄清楚 wpa_supplicant 需要什么类型的证书。

基本上,我有一个 ca.pem,并且对于给定设备,会生成以下文件:

  • 演示文件
  • 演示.csr
  • 演示密钥
  • 演示.p12

看起来像wpa_supplicant 可以使用包含公共和私有证书的文件,也可以使用两个文件。最初,我使用两个文件:

  • 演示密钥
  • demo.pem,通过运行创建openssl pkcs12 -in demo.p12 -out demo.pem -clcerts

wpa_supplicant.conf配置如下:

network={
    ssid="HelloWorld"
    key_mgmt=WPA-EAP
    pairwise=CCMP
    group=CCMP
    eap=TLS
    identity="[email protected]"
    ca_cert="/etc/ssl/private/ca.pem"
    client_cert="/etc/ssl/private/demo.pem"
    private_key="/etc/ssl/private/demo.key"
    private_key_passwd=...
}

身份验证失败并出现以下错误:

OpenSSL:tls_read_pkcs12 - 无法使用 PKCS#12 文件错误:0D0680A8:asn1 编码例程:ASN1_CHECK_TLEN:错误标签

如果我删除client_cert并仅使用private_key,指向 .pem 文件,错误仍然相同。

如果我将其指向 .p12,错误是:

OpenSSL: tls_connection_private_key - 无法加载私钥错误:00000000:lib(0):func(0):reason(0)

Debian 的文档告诉我们PEM 应从 .pfx 创建。当我这样做时:

openssl pkcs12 -export -out demo.pfx -inkey demo.key -in demo.crt -certfile ca.crt
openssl pkcs12 -in demo.pfx -out demo.pem -clcerts

原来的错误又回来了:

OpenSSL:tls_read_pkcs12 - 无法使用 PKCS#12 文件错误:0D0680A8:asn1 编码例程:ASN1_CHECK_TLEN:错误标签

我究竟应该如何为 wpa_supplicant 生成证书?

答案1

在你的wpa_supplicant.conf文件中,它应该是eap=TTLS

如:

network={
ssid="HelloWorld"
key_mgmt=WPA-EAP
pairwise=CCMP
group=CCMP
eap=TTLS
identity="[email protected]"
ca_cert="/etc/ssl/private/ca.pem"
client_cert="/etc/ssl/private/demo.pem"
private_key="/etc/ssl/private/demo.key"
private_key_passwd=...
}  

此外,根据配置,您可能需要anonymous_identityphase2

假设是EAP-TTLS-MSChapv2:

network={
ssid="HelloWorld"
key_mgmt=WPA-EAP
pairwise=CCMP
group=CCMP
eap=TTLS
identity="[email protected]"
ca_cert="/etc/ssl/private/ca.pem"
client_cert="/etc/ssl/private/demo.pem"
private_key="/etc/ssl/private/demo.key"
private_key_passwd=...
phase2="auth=MSCHAPV2"
}  

相关内容