Làm thế nào để thêm nhiều tên dns vào con rối của tôi?


16

con rối của tôi

[master]
certname = myname.mydomain.com
ca_server = myname.mydomain.com
certdnsnames = puppet;puppet.local;myname.dyndns.org;hivemind.local;

theo hiểu biết của tôi với certdnsnames được xác định sau đây sẽ hoạt động:

puppet agent --server myname.dyndns.org --test

nhưng tôi nhận được lỗi sau:

err: Could not retrieve catalog from remote server: hostname was not match with the server certificate

Làm thế nào để tránh lỗi này? Làm thế nào để xác định chính xác certdnsnames? tôi đã tìm thấy tài liệu khác nhau về điều này, nhưng không có ví dụ đơn giản. ii sử dụng "," để phân tách tôi hoàn toàn không thể ký. tôi cũng đã thấy một cú pháp như

certdnsnames = puppet:puppet.intra.myserver.fr,puppet.myserver.fr:puppet,puppet:puppet,puppet.intra.myserver.fr,puppet.myserver.fr

http://projects.puppetlabs.com/issues/5776

nhưng đối với tôi không rõ khi nào cần thêm "con rối:" và khi nào thì không.

Câu trả lời:


25

Vì lợi ích của bất kỳ ai khác vấp phải câu trả lời này:

Do CVE-2011-3872 , Puppet không còn hỗ trợ certdnsnamestùy chọn này. Từ tài liệu:

Cài đặt certdnsnames không còn hoạt động, sau CVE-2011-3872. Chúng tôi bỏ qua giá trị hoàn toàn. Đối với yêu cầu chứng chỉ của riêng bạn, bạn có thể đặt dns_alt_names trong cấu hình và nó sẽ được áp dụng cục bộ. Không có tùy chọn cấu hình để đặt tên alt DNS hoặc bất kỳ giá trị objectAltName nào khác, cho chứng chỉ nút khác. Thay phiên, bạn có thể sử dụng tùy chọn dòng lệnh --dns_alt_names để đặt nhãn được thêm trong khi tạo CSR của riêng bạn.

Bạn có thể tạo chứng chỉ SSL cho máy chủ của mình bằng objectAlternativeName như thế này:

$ puppet cert generate <puppet master's certname> --dns_alt_names=<comma-separated list of DNS names>

3
Lưu ý bổ sung: Trước khi chạy Puppet cert tạo, hãy xóa các tệp .pem cho chủ rối trong / var / lib / Puppet / ssl / private_keys, / var / lib / Puppet / ssl / ca / ​​Sign / và / var / lib / Puppet / ssl / certs. Tạo chứng chỉ mới không làm mất kết nối với các máy khách hiện tại, vì họ xác minh chứng chỉ của người điều khiển rối bằng chứng chỉ của CA mà họ đã tải xuống ở lần kết nối đầu tiên.
Erik Forsberg

9
Này, cảm ơn Lars từ xưa. Bạn chỉ cần trả lời câu hỏi của tôi.
larsks

2

Đối với Puppet 4+, hãy sử dụng các lệnh sau để thay đổi tên dns được chấp nhận cho chứng chỉ Puppetserver:

Đổi tên các chứng chỉ hiện có thành * .backup:

mv /etc/puppetlabs/puppet/ssl/private_keys/$(hostname -f).pem{,.backup}
mv /etc/puppetlabs/puppet/ssl/ca/signed/$(hostname -f).pem{,.backup}
mv /etc/puppetlabs/puppet/ssl/certs/$(hostname -f).pem{,.backup}

tạo chứng chỉ mới (thêm tên alt mong muốn của bạn):

puppet cert generate $(hostname -f) --dns_alt_names=$(hostname -f),puppet

khởi động lại Puppetserver để sử dụng chứng chỉ mới

service puppetserver restart

1
  • Thứ nhất, certdnsnameslà một danh sách phân tách đại tràng.
  • Thứ hai, lỗi này xuất hiện do đại lý đang liên hệ với chủ sử dụng tên máy chủ không được bao gồm khi chứng chỉ được ký: http://docs.puppetlabs.com/guides/troubledh Boot.html

xin lỗi vì đã không chấp nhận câu trả lời này, tôi đã có một vấn đề dịch với "ruột" vì vậy câu trả lời khác đã giúp tôi ra bằng cách đơn giản thể hiện cho tôi những char đúng :) nhưng cảm ơn bạn đã trả lời của bạn
c33s

0

Dựa theo

puppet agent --genconfig

bạn phải sử dụng danh sách được phân tách bằng dấu hai chấm (":" không ";").

Nên nó phải là

certdnsnames = 'puppet:puppet.local:myname.dyndns.org:hivemind.local'

HTH


0

Để thêm mục SAN vào chứng chỉ máy chủ con rối, hãy sử dụng:

systemctl stop puppetserver
puppetserver ca setup --subject-alt-names $(hostname -f),puppet
systemctl start puppetserver

có thể cần phải rõ ràng ra Certs hiện qua rm -rf $(puppet master --configprint ssldir)cũng

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.