Menjalankan agen dengan sertifikat yang ditandatangani sendiri

Azure DevOps Server 2022 - Azure DevOps Server 2019

Topik ini menjelaskan cara menjalankan agen yang dihost sendiri dengan sertifikat yang ditandatangani sendiri.

Catatan

Artikel ini berlaku untuk agen versi 2.x dan yang lebih baru.

Bekerja dengan sertifikat server SSL

Enter server URL > https://corp.tfs.com/tfs
Enter authentication type (press enter for Integrated) >
Connecting to server ...
An error occurred while sending the request.

Log diagnostik agen menunjukkan:

[2017-11-06 20:55:33Z ERR  AgentServer] System.Net.Http.HttpRequestException: An error occurred while sending the request. ---> System.Net.Http.WinHttpException: A security error occurred

Kesalahan ini mungkin menunjukkan sertifikat server yang Anda gunakan di server TFS Anda tidak dipercaya oleh komputer build. Pastikan Anda menginstal sertifikat server ssl yang ditandatangani sendiri ke penyimpanan sertifikat OS.

Windows: Windows certificate store
Linux: OpenSSL certificate store
macOS: OpenSSL certificate store for agent version 2.124.0 or below
       Keychain for agent version 2.125.0 or above

Anda dapat dengan mudah memverifikasi apakah sertifikat telah diinstal dengan benar dengan menjalankan beberapa perintah. Anda harus baik selama jabat tangan SSL selesai dengan benar bahkan Anda mendapatkan 401 untuk permintaan tersebut.

Windows: PowerShell Invoke-WebRequest -Uri https://corp.tfs.com/tfs -UseDefaultCredentials 
Linux: curl -v https://corp.tfs.com/tfs 
macOS: curl -v https://corp.tfs.com/tfs (agent version 2.124.0 or below, curl needs to be built for OpenSSL)
       curl -v https://corp.tfs.com/tfs (agent version 2.125.0 or above, curl needs to be built for Secure Transport)

Jika entah bagaimana Anda tidak dapat berhasil menginstal sertifikat ke penyimpanan sertifikat komputer Anda karena berbagai alasan, seperti: Anda tidak memiliki izin atau Anda berada di komputer Linux yang disesuaikan. Agen versi 2.125.0 atau lebih tinggi memiliki kemampuan untuk mengabaikan kesalahan validasi sertifikat server SSL.

Penting

Ini tidak aman dan tidak disarankan, kami sangat menyarankan Anda untuk menginstal sertifikat ke penyimpanan sertifikat komputer Anda.

Teruskan --sslskipcertvalidation selama konfigurasi agen

./config.cmd/sh --sslskipcertvalidation

Catatan

Ada batasan penggunaan bendera ini di Linux dan macOS
Pustaka libcurl di komputer Linux atau macOS Anda perlu dibuat dengan OpenSSL, Detail Selengkapnya

Git mendapatkan sumber gagal dengan masalah sertifikat SSL (hanya agen Windows)

Kami mengirimkan Git baris perintah sebagai bagian dari agen Windows. Kami menggunakan salinan Git ini untuk semua operasi terkait Git. Ketika Anda memiliki sertifikat SSL yang ditandatangani sendiri untuk server TFS lokal Anda, pastikan untuk mengonfigurasi Git yang kami kirim untuk memungkinkan sertifikat SSL yang ditandatangani sendiri. Ada 2 pendekatan untuk menyelesaikan masalah.

  1. Atur konfigurasi git berikut di tingkat global oleh agen yang dijalankan sebagai pengguna.

    git config --global http."https://tfs.com/".sslCAInfo certificate.pem
    

    Catatan

    Pengaturan konfigurasi Git tingkat sistem tidak dapat diandalkan di Windows. File .gitconfig sistem disimpan dengan salinan Git yang kami kemas, yang akan diganti setiap kali agen ditingkatkan ke versi baru.

  2. Aktifkan git untuk digunakan SChannel selama konfigurasi dengan 2.129.0 atau agen versi yang lebih tinggi Pass --gituseschannel selama konfigurasi agen

    ./config.cmd --gituseschannel
    

    Catatan

    Git SChannel memiliki persyaratan yang lebih terbatas untuk sertifikat yang ditandatangani sendiri. Sertifikat yang dinyanyikan sendiri yang dihasilkan oleh perintah IIS atau PowerShell mungkin tidak mampu dengan SChannel.

Bekerja dengan sertifikat klien SSL

IIS memiliki pengaturan SSL yang memerlukan semua permintaan masuk ke Azure DevOps Server atau TFS harus menunjukkan sertifikat klien selain kredensial reguler.

Ketika pengaturan SSL IIS diaktifkan, Anda perlu menggunakan 2.125.0 atau di atas agen versi dan mengikuti langkah-langkah tambahan ini untuk mengonfigurasi komputer build terhadap server Azure DevOps atau TFS Anda.

  • Siapkan semua informasi sertifikat yang diperlukan

    • Sertifikat CA dalam .pem format (Ini harus berisi kunci publik dan tanda tangan sertifikat CA, Anda perlu memasukkan sertifikat ca akar dan semua sertifikat ca perantara Anda ke dalam satu .pem file)
    • Sertifikat klien dalam .pem format (Ini harus berisi kunci publik dan tanda tangan sertifikat Klien)
    • Kunci privat sertifikat klien dalam .pem format (Ini hanya boleh berisi kunci privat sertifikat Klien)
    • Paket arsip sertifikat klien dalam .pfx format (Ini harus berisi tanda tangan, kunci publik, dan kunci privat sertifikat Klien)
    • Gunakan SAME kata sandi untuk melindungi kunci privat sertifikat Klien dan paket arsip sertifikat Klien, karena keduanya memiliki kunci privat sertifikat klien
  • Menginstal sertifikat CA ke penyimpanan sertifikat mesin

    • Linux: Penyimpanan sertifikat OpenSSL
    • macOS: Sistem atau Rantai Kunci Pengguna
    • Windows: Penyimpanan sertifikat Windows
  • Teruskan --sslcacert, --sslclientcert, --sslclientcertkey. --sslclientcertarchive dan --sslclientcertpassword selama konfigurasi agen.

    .\config.cmd/sh --sslcacert ca.pem --sslclientcert clientcert.pem --sslclientcertkey clientcert-key-pass.pem --sslclientcertarchive clientcert-archive.pfx --sslclientcertpassword "mypassword"
    

    Kata sandi kunci privat sertifikat klien Anda disimpan dengan aman di setiap platform.

    Linux: Encrypted with a symmetric key based on the machine ID
    macOS: macOS Keychain
    Windows: Windows Credential Store
    

Pelajari selengkapnya tentang dukungan sertifikat klien agen.