Score:0

ฉันจะหลีกเลี่ยงใบรับรอง AD FS catch-22 ด้วยตนเองได้อย่างไร

ธง mx

ฉันไม่สามารถเริ่มบริการ AD FS ได้ เนื่องจากได้รับการกำหนดค่าด้วยใบรับรองที่มีชุดส่วนขยาย X509 ที่ซับซ้อนมากเกินไปโดยไม่จำเป็น สิ่งนี้ทำให้บริการล้มเหลวโดยมีข้อผิดพลาด 102 ซึ่งเป็นข้อยกเว้นของอาร์กิวเมนต์ที่เป็นค่าว่าง เงียบ.

รายละเอียดข้อยกเว้น: 
System.ArgumentNullException: ค่าต้องไม่เป็นค่าว่าง
ชื่อพารามิเตอร์: ใบรับรอง
   ที่ System.IdentityModel.Tokens.X509SecurityToken..ctor (ใบรับรอง X509Certificate2, รหัสสายอักขระ, บูลีนโคลน, บูลีนแบบใช้แล้วทิ้ง)
   ที่ Microsoft.IdentityServer.Service.Configuration.MSISSecurityTokenServiceConfiguration.Create (Boolean forSaml, Boolean forPassive)
   ที่ Microsoft.IdentityServer.Service.Policy.PolicyServer.Service.ProxyPolicyServiceHost.ConfigureWIF()
   ที่ Microsoft.IdentityServer.Service.SecurityTokenService.MSISConfigurableServiceHost.Configure()
   ที่ Microsoft.IdentityServer.Service.Policy.PolicyServer.Service.ProxyPolicyServiceHost.Create()
   ที่ Microsoft.IdentityServer.ServiceHost.STSService.StartProxyPolicyStoreService (ServiceHostManager serviceHostManager)
   ที่ Microsoft.IdentityServer.ServiceHost.STSService.OnStartInternal (Boolean requestAdditionalTime)

โอเค ฉันต้องเปลี่ยนใบรับรอง ค้นหาวิธีการทำ มีแหล่งข้อมูลมากมาย แต่ละคนต้องการให้คุณเปิดสแน็ปอิน AD FS MMC ซึ่งโพสต์ข้อผิดพลาด:

ADMIN0017: เกิดข้อยกเว้นขณะเชื่อมต่อกับบริการกำหนดค่า (...) 
หรือ AD FS Windows Service ไม่ทำงาน

กล่าวอีกนัยหนึ่ง ADFS ทำสิ่งที่ฉันสามารถอธิบายได้เท่านั้น ใบ้อย่างไม่น่าเชื่อ. นั่นคือ

  • อนุญาตให้ผู้ใช้กำหนดค่าในลักษณะที่จะไม่เริ่มทำงาน
  • ไม่อนุญาตให้ผู้ใช้เปลี่ยนการกำหนดค่าหากไม่ได้ใช้งาน

มีคำสั่ง powershell ที่ทำสิ่งเดียวกัน

Set-AdfsCertificate -CertificateType Service-Communications -Thumbprint <วางหัวแม่มือฐานสิบหก>

นำไปสู่ความโง่เขลาแบบเดียวกัน:

Set-AdfsCertificate : ไม่สามารถเชื่อมต่อกับ net.tcp://localhost:1500/policy

เช่นเดียวกับคำสั่ง adfs powershell อื่น ๆ

แต่ที่แย่กว่านั้น การกำหนดค่าเป็นแบบป้านและลึกลับ มีเพียงวิธีเดียวเท่านั้นในการตั้งค่า certs ที่ดูเหมือนว่าจะใช้งานได้ และฉันหลงทางในส่วนขยายของคีย์, ส่วนขยายของคีย์เพิ่มเติม, ชื่อทางเลือก, วิธีการคีย์, การอนุญาตคอมพิวเตอร์, การอนุญาตผู้ใช้, การอนุญาตบัญชีบริการ, รายละเอียด pfx ของคีย์ส่วนตัว รุ่น pfx, รุ่นผู้ให้บริการ crypto และอื่นๆ เอกสารประกอบของ Microsoft ล้าสมัย 404 และ/หรือไม่สมบูรณ์

ดังนั้นฉันจึงต้องเปลี่ยนใบรับรองนี้สักสองสามโหลผ่านการลองผิดลองถูกจนกว่าจะมีบางอย่างติดอยู่วิธีง่ายๆ ในการเปลี่ยนใบรับรองที่ ADFS ใช้นั้นคืออะไร

  1. ไม่เกี่ยวข้องกับการใช้คอนโซล AD FS MMC วิธีนี้จะใช้ได้ก็ต่อเมื่อบริการสามารถเริ่มได้ ซึ่งไม่สามารถทำได้
  2. ไม่เกี่ยวข้องกับคำสั่ง PowerShell ของ ADFS ซึ่งน่าเสียดายที่จำเป็นต้องเรียกใช้บริการด้วย

แก้ไข: แม้แต่การติดตั้ง ADFS ใหม่ก็ยังทำได้ ไม่ แก้ไขปัญหา แม้ว่าจะเลือกฐานข้อมูลการกำหนดค่าอื่นก็ตาม ฉันยังคงติดอยู่ที่ข้อผิดพลาด 102 ดูเหมือนว่าการตั้งค่าใบรับรองไม่ได้ถูกจัดเก็บไว้ในฐานข้อมูล

มองไกลออกไปอีกเล็กน้อยโดยเปิดใช้งานการตรวจสอบบน C:\ProgramData\Microsoft\Crypto\RSA\MachineKeys โฟลเดอร์ ฉันสังเกตเห็นข้อผิดพลาดนี้ (รายละเอียดส่วนตัวสับสน):

เรื่อง:
    รหัสความปลอดภัย: MYDOMAIN\adfsroot$
    ชื่อบัญชี: adfsroot$
    โดเมนบัญชี: MYDOMAIN
    ID เข้าสู่ระบบ: 0xFFFFFFFF

พารามิเตอร์การเข้ารหัส:
    ชื่อผู้ให้บริการ: ผู้ให้บริการที่เก็บคีย์ซอฟต์แวร์ของ Microsoft
    ชื่ออัลกอริทึม: RSA
    ชื่อคีย์: {UUID-HERE}
    ประเภทคีย์: คีย์เครื่อง

การดำเนินการเข้ารหัสลับ:
    การดำเนินการ: สร้างคีย์
    รหัสส่งคืน: 0x80090010

สิ่งนี้ชี้ไปที่ปัญหาการอนุญาต โปรแกรมไม่สามารถสร้างคีย์ RSA เป็นส่วนหนึ่งของการเริ่มต้นได้ กำลังพยายามเข้าถึงไฟล์รหัสเครื่องซึ่งมีชื่อดังนี้ สมมติว่า UUID ของคีย์และ UUID ของเครื่องเป็น

12345678-90AB-CDEF-1234-567890ABCDEF
11223344-5566-7788-9900-AABBCCDDEEFF

ดูเหมือนว่าไฟล์จะถูกตั้งชื่อเป็น:

1234567890ABCDEF1234567890ABCDEF_11223344-5566-7788-9900-AABBCCDDEEFF.sys

มีการแทนไบนารีข้อความธรรมดาของไพรเวตคีย์ ซึ่งได้รับการปกป้องโดยสิทธิ์ NTFS ADFS สร้างไฟล์ดังกล่าวสี่ไฟล์ และผู้ใช้ได้รับอนุญาตให้ทำเช่นนั้น

อย่างไรก็ตาม เมื่อฉันตรวจสอบหนึ่งในสี่ไฟล์คีย์ส่วนตัวที่สร้างขึ้น ในขณะที่มีเจ้าของที่ถูกต้อง MYDOMAIN\adfsroot$ไม่มีสิทธิ์ที่ถูกต้อง: สิทธิ์ที่มีประสิทธิภาพสำหรับ adfsroot$ ไม่สามารถเข้าถึงได้เลย (นำไปสู่ข้อผิดพลาด 102 ด้านบน)เห็นได้ชัดว่า ADFS กำลังโยนกุญแจที่เป็นที่เลื่องลือออกไปหลังจากล็อคประตู หรือระบบไฟล์กำลังทำเช่นนี้เนื่องจากกำหนดค่าผิดพลาด กุญแจเครื่อง โฟลเดอร์

ฉันจะทำให้ซอฟต์แวร์ที่เขียนไม่ดีนี้ทำงานได้อย่างไร

Score:0
ธง mx

ตรวจสอบว่า กุญแจเครื่อง มีสิทธิ์ถูกต้อง

เพื่อแก้ไขปัญหา: ฉันได้รับสิทธิ์ adfsroot ใช้สิทธิ์ NTFS ขั้นสูงเหล่านี้บนรูท กุญแจเครื่อง โฟลเดอร์:

โฟลเดอร์รายการ 
อ่านแอตทริบิวต์
อ่านแอตทริบิวต์เพิ่มเติม
สร้างไฟล์
สร้างโฟลเดอร์
เขียนแอตทริบิวต์
เขียนแอตทริบิวต์เพิ่มเติม
อ่านสิทธิ์

ตรวจสอบให้แน่ใจว่า นำไปใช้กับ ค่าเป็น โฟลเดอร์ โฟลเดอร์ย่อย และไฟล์นี้ (เพื่อเปิดใช้งานการสืบทอด). โดยใช้ cacls หรือ icaclsสัญกรณ์จะเป็น:

MYDOMAIN\adfsroot$:(OI)(CI)(R,W)

ด้วยเหตุผลบางประการ ADFS จึงทำงานผิดพลาดที่นี่ และค่าเริ่มต้นตามที่ระบุโดย เอกสาร ไม่ได้ผล.

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา