strongSwan IKEv2 + Windows 7 Agile VPN: Điều gì gây ra lỗi 13801


8

Tôi có một ví dụ AWS mà tôi muốn trở thành một máy chủ VPN. Nó sẽ kết nối các máy khách Windows 7 với một mạng riêng trong đám mây Amazon.

  • Tôi đã cài đặt Ubuntu 12.04 và strongswan-ikev2gói.
  • ipsec version báo cáo Linux strongSwan U4.5.2/K3.2.0-52-virtual
  • Lưu ý rằng cả máy khách và máy chủ đều đứng sau NAT (máy khách vì nó nằm trên mạng văn phòng địa phương và máy chủ vì nó nằm trong đám mây của Amazon). Tôi đã bỏ chặn các cổng UDP 500 và 4500 trên cả bảng điều khiển của Amazon và tường lửa của máy khách.
  • Đây là /etc/ipsec.conf:

    config setup
        plutostart=no
    
    conn %default
        keyexchange=ikev2
        ike=aes256-sha1-modp1024!
        esp=aes256-sha1!
        dpdaction=clear
        dpddelay=300s
        rekey=no
    
    conn win7vpn
        left=%any
        leftsubnet=<amazon VPC CIDR block>
        leftauth=pubkey
        leftcert=openssl-cert.pem
        leftid=<vpn server public dns name>
        right=%any
        rightsourceip=<amazon private IP address, which elastic ip is forwarded to>
        rightauth=eap-mschapv2
        rightsendcert=never
        eap_identity=%any
        auto=add
    
  • Đây là /etc/ipsec.secrets:

    : RSA openssl-key.rsa
    TESTDOMAIN\testuser : EAP "testpassword"
    
  • Tôi đã thêm chứng chỉ CA đã ký chứng chỉ máy chủ của máy chủ vào kho lưu trữ chứng chỉ của máy cục bộ (không phải người dùng) để Windows có thể xác thực máy chủ.

Sau đó, tôi cố gắng kết nối với máy chủ bằng ứng dụng khách Windows 7 theo quy định tại đây , với một ngoại lệ - tôi đang sử dụng tên DNS thay vì địa chỉ IP. Tôi nhập tên người dùng, tên miền và mật khẩu trong tệp ipsec.secrets của mình và nó cố gắng kết nối.

Khi đó, tôi nhận được các bản ghi mạnh mẽ như thế này. Tôi đã nghiền ngẫm những điều này một chút cho cả sự kiểm duyệt và sự rõ ràng; CLIENTPUB / CLIENTPRIV là địa chỉ IP công cộng và riêng tư của khách hàng và AMAZONPRIV là địa chỉ IP riêng của máy chủ (là địa chỉ IP công cộng của máy chủ - Amazon gọi đây là "IP đàn hồi" - chuyển tiếp).

Sep  4 00:16:17 localhost charon: 14[IKE] CLIENTPUB is initiating an IKE_SA
Sep  4 00:16:17 localhost charon: 14[NET] received packet: from CLIENTPUB[500] to AMAZONPRIV[500]
Sep  4 00:16:17 localhost charon: 14[ENC] parsed IKE_SA_INIT request 0 [ SA KE No N(NATD_S_IP) N(NATD_D_IP) ]
Sep  4 00:16:17 localhost charon: 14[IKE] CLIENTPUB is initiating an IKE_SA
Sep  4 00:16:17 localhost charon: 14[IKE] local host is behind NAT, sending keep alives
Sep  4 00:16:17 localhost charon: 14[IKE] remote host is behind NAT
Sep  4 00:16:17 localhost charon: 14[ENC] generating IKE_SA_INIT response 0 [ SA KE No N(NATD_S_IP) N(NATD_D_IP) N(MULT_AUTH) ]
Sep  4 00:16:17 localhost charon: 14[NET] sending packet: from AMAZONPRIV[500] to CLIENTPUB[500]
Sep  4 00:16:17 localhost charon: 15[NET] received packet: from CLIENTPUB[4500] to AMAZONPRIV[4500]
Sep  4 00:16:17 localhost charon: 15[ENC] unknown attribute type INTERNAL_IP4_SERVER
Sep  4 00:16:17 localhost charon: 15[ENC] parsed IKE_AUTH request 1 [ IDi CERTREQ N(MOBIKE_SUP) CP(ADDR DNS NBNS SRV) SA TSi TSr ]
Sep  4 00:16:17 localhost charon: 15[IKE] received cert request for "C=US, ST=TX, O=Test CA, CN=Test CA"
Sep  4 00:16:17 localhost charon: 15[IKE] received 316 cert requests for an unknown ca
Sep  4 00:16:17 localhost charon: 15[CFG] looking for peer configs matching AMAZONPRIV[%any]...CLIENTPUB[CLIENTPRIV]
Sep  4 00:16:17 localhost charon: 15[CFG] selected peer config 'dlpvpn'
Sep  4 00:16:17 localhost charon: 15[IKE] initiating EAP-Identity request
Sep  4 00:16:17 localhost charon: 15[IKE] peer supports MOBIKE
Sep  4 00:16:17 localhost charon: 15[IKE] authentication of 'C=US, ST=TX, O=DLP Test CA, CN=vpn.example.com' (myself) with RSA signature successful
Sep  4 00:16:17 localhost charon: 15[IKE] sending end entity cert "C=US, ST=TX, O=DLP Test CA, CN=vpn.example.com"
Sep  4 00:16:17 localhost charon: 15[ENC] generating IKE_AUTH response 1 [ IDr CERT AUTH EAP/REQ/ID ]
Sep  4 00:16:17 localhost charon: 15[NET] sending packet: from AMAZONPRIV[4500] to CLIENTPUB[4500]

Tại thời điểm này, Windows bật lên một thông báo lỗi ngay lập tức:

Verifying user name and password...
Error 13801: IKE authentication credentials are unacceptable

Sau vài giây, charon thử lại và sau đó đóng kết nối.

Sep  4 00:16:37 localhost charon: 16[IKE] sending keep alive
Sep  4 00:16:37 localhost charon: 16[NET] sending packet: from AMAZONPRIV[4500] to CLIENTPUB[4500]
Sep  4 00:16:47 localhost charon: 03[JOB] deleting half open IKE_SA after timeout

Và đó là nó.

Theo như tôi có thể nói, tôi đang làm theo tất cả các hướng dẫn trên wiki mạnh mẽ.

Tôi làm gì sai ở đây?

Chỉnh sửa: đây chắc chắn là một vấn đề với chứng chỉ. Tôi đã vô hiệu hóa kiểm tra xác thực mở rộng bằng cách chỉnh sửa sổ đăng ký và khởi động lại như được mô tả trong MSKB926182 (lol nếu bạn muốn liên kết đến đó) và bây giờ tôi có thể kết nối với máy chủ VPN của mình mà không gặp lỗi. Tôi sẽ tìm ra cách tạo ra các certs thỏa mãn các yêu cầu và thêm câu trả lời. Cảm ơn @ecdsa cho con trỏ đến trang cert trên wiki mạnhSwan đã đưa tôi đi đúng hướng.


Tab bảo mật của các thuộc tính VPN trên máy khách Windows 7 trông như thế nào? Ngoài ra, trong khi thiết lập của tôi không giống nhau, tôi có IKEv2 làm việc với các chứng chỉ trong kho chứng chỉ Người dùng hiện tại.
0xFE

Chứng chỉ máy chủ của bạn có đáp ứng tất cả các yêu cầu không?
ecdsa

Nếu bạn đã giải quyết vấn đề của riêng mình, hãy xem xét đăng một câu trả lời dưới đây và đánh dấu nó là đã giải quyết.
Michael Hampton

Câu trả lời:


6

Tìm hiểu điều này. @ecdsa chỉ cho tôi đi đúng hướng, và cuối cùng tôi đã có thể giải quyết vấn đề bằng cách làm theo hướng dẫn này .

ipsec pki --gen --type rsa --size 4096 --outform pem > vpnca.key.pem
ipsec pki --self --flag serverAuth --in vpnca.key.pem --type rsa --digest sha1 \
    --dn "C=US, O=Example Company, CN=Example VPN CA" --ca > vpnca.crt.der
ipsec pki --gen --type rsa --size 4096 --outform pem > vpn.example.com.key.pem
ipsec pki --pub --in vpn.example.com.key.pem --type rsa > vpn.example.com.csr
ipsec pki --issue --cacert vpnca.crt.der --cakey vpnca.key.pem --digest sha1 \
    --dn "C=US, O=Example Company, CN=vpn.example.com" \
    --san "vpn.example.com" --flag serverAuth --outform pem \
    < vpn.example.com.csr > vpn.example.com.crt.pem 
openssl rsa -in vpn.example.com.key.pem -out vpn.example.com.key.der -outform DER

cp vpnca.crt.der /etc/ipsec.d/cacerts
cp vpn.example.com.crt.pem /etc/ipsec.d/certs
cp vpn.example.com.key.der /etc/ipsec.d/private

Về lỗi

Thông báo lỗi là "Lỗi 13801: Thông tin xác thực IKE không được chấp nhận", có vẻ như thông tin đăng nhập của người dùng của tôi không hoạt động. Tuy nhiên, đây là thông báo về việc xác thực máy chủ , được thực hiện (theo cấu hình của tôi) bằng chứng chỉ SSL của máy chủ. Microsoft đã xuất bản tài liệu về Khắc phục sự cố Kết nối VPN IKEv2 liệt kê các nguyên nhân có thể gây ra lỗi này:

  • Giấy chứng nhận đã hết hạn.
  • Root đáng tin cậy cho chứng chỉ không có trên máy khách.
  • Tên chủ đề của chứng chỉ không khớp với máy tính từ xa.
  • Chứng chỉ không có các giá trị Sử dụng khóa nâng cao (EKU) được chỉ định.

Trong trường hợp của tôi, vấn đề của tôi phải làm với các giá trị EKU. Theo hướng dẫn mà tôi đã liên kết ở trên cùng, tôi có thể tạo chứng chỉ với các giá trị EKU chính xác và nó hoạt động rất tốt.

Để khắc phục sự cố này, bạn có thể tắt kiểm tra EKU trên máy khách Windows của mình (tất nhiên, điều này chỉ nên được thực hiện để kiểm tra):

  • Phóng regedit
  • Hướng đến HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\RasMan\Parameters
  • Thêm một DWORD được gọi DisableIKENameEkuCheckvà đặt giá trị của nó thành1
  • Tài liệu của Microsoft hướng dẫn bạn khởi động lại sau khi thực hiện việc này, nhưng tôi không cần để nó có hiệu lực.

một nguyên nhân có thể khác: IP được sử dụng trong cert, nhưng tên máy chủ được sử dụng trên máy khách.
Larsen

hoặc tên máy chủ có trong chứng chỉ, nhưng máy khách kết nối với địa chỉ IP của nó. Giải pháp:ipsec pki --isue ... --san @ipaddress
bouke

Sau khi làm theo các bước này, cuối cùng, vấn đề của tôi là root đáng tin cậy đã được cài đặt sai vị trí, nó phải nằm trong "Máy tính \ Cơ quan chứng nhận gốc đáng tin cậy", chứ không phải trong "Người dùng hiện tại \ TRCA".
bouke

2

Tôi đã có một vấn đề giống hệt nhau và giải quyết nó bằng cách đảm bảo tôi có chuỗi chứng chỉ trong tệp chứng chỉ (chứng chỉ cuối thực thể, CA trung gian, CA gốc - theo thứ tự đó). TLS rất vui.

Sau khi khởi động lại strongSwan, cái này đã ngừng hoạt động, nhưng bắt đầu hoạt động trở lại khi tôi bỏ CA trung gian và root vào /etc/ipsec.d/cacerts.


0

Sau một thời gian dài tìm kiếm, chuỗi này đã có cấu hình Windows Phone 10 (WP10) của tôi hoạt động với IKEv2! Một điều cần đề cập có thể là bạn phải. Và vâng, bạn cần phải lấy certs ngay (về phía máy chủ - máy khách chỉ cần biết CA gốc của máy chủ).

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.