Làm thế nào tôi có thể ký trước chứng nhận con rối?


26

Con rối yêu cầu chứng chỉ giữa máy khách (con rối) được quản lý và máy chủ (con rối). Bạn có thể chạy thủ công trên máy khách và sau đó vào máy chủ để ký chứng chỉ, nhưng làm thế nào để bạn tự động hóa quy trình này cho các cụm / máy đám mây?


1
Vấn đề một góc là khi bạn sử dụng lại tên máy chủ. Tự động gán sẽ không giải quyết được điều đó. Tôi gặp vấn đề tương tự.
Joel K

Câu trả lời:


28

Trên máy chủ (con rối) chạy:

puppetca --generate <NAME>

Sau đó sao chép nội dung sau từ máy chủ vào máy khách:

/var/lib/puppet/ssl/certs/<NAME>.pem
/var/lib/puppet/ssl/certs/ca.pem
/var/lib/puppet/ssl/private_keys/<NAME>.pem

Nếu bạn muốn đăng nhập <NAME>như một cái gì đó ngoài tên máy chủ, hãy sử dụng:

puppetd --fqdn=<NAME>

Và thêm vào /etc/puppet/puppet.conf nếu chạy daemon

[puppetd]
certname=<NAME>

Điều đó thực sự hữu ích, cảm ơn. Tôi đã tự đánh đố về điều đó bản thân mình.
Jon Topper

1
lệnh mới được puppet cert --generate <NAME>xem serverfault.com/a/457364/71452
c33s

6

Nếu bạn có cơ sở dữ liệu máy chủ, bạn có thể sử dụng tính năng tự động gán. Trong puppet.conftệp của bạn , trong [puppetmasterd], thêm:

autosign = /path/to/autosign.conf

Sau đó sử dụng một crontab để tạo tập tin này. Tệp tự động chỉ là một danh sách các máy chủ lưu trữ tự động khi chúng lần đầu tiên kết nối với người điều khiển rối. Tôi sử dụng LDAP để định cấu hình máy chủ con rối của mình, vì vậy cron của tôi trông như sau:

* * * * * root /usr/bin/ldapsearch -x '(objectClass=puppetClient)' cn | /bin/grep ^cn | /bin/sed 's!^cn: !!' > /etc/puppet/autosign.conf

Tôi chắc rằng những người sử dụng iClassify sẽ có thể viết một truy vấn để làm điều tương tự.

Tất nhiên, bạn cần phải có một số niềm tin trong mạng. Tôi sử dụng cái này trên EC2. Máy chủ rối của tôi nằm trong một nhóm chỉ cho phép kết nối từ các nhóm đáng tin cậy khác. Tôi không khuyên bạn nên làm điều này nếu con rối của bạn mở mạng internet.


6

Câu trả lời đơn giản: tự động ký yêu cầu mới. Điều này tất nhiên là nguy hiểm vì bạn tin tưởng một cách mù quáng vào bất kỳ hệ thống nào kết nối với người điều khiển rối của bạn, đó là mục đích để yêu cầu ký thủ công.

[puppetmasterd]
autosign = true

Bạn cũng có thể chỉ định false và một tệp để sử dụng để xác định khóa nào sẽ ký.

Xem tài liệu tham khảo cấu hình trên wiki rối.

Một tùy chọn khác là sử dụng một công cụ như Capistrano , trong đó bạn chỉ định nút rối và tạo các nút đối tượng khách và trong tác vụ:

  • Tạo nút cá thể, giả sử với API của EC2 với Ruby.
  • Chạy con rối trên ví dụ, kết nối với máy chủ.
  • Chạy Puppetca - gán cho yêu cầu của cá thể (vì chúng ta biết tên thể hiện như được đưa ra trong bit tạo ở trên).
  • Chạy rối một lần nữa trong trường hợp này, lần này kết nối thành công khi chứng chỉ được ký.

Lưu ý: Nếu bạn đang sử dụng Puppet 2.6 trở lên, [puppetmasterd]tiêu đề của phần bây giờ sẽ là [master]. Xem docs.puppetlabs.com/guides/tools.html để biết thêm thông tin.
MrLore

4

Trên máy chủ (con rối) chạy:

puppetca --generate <NAME>

Sau đó sao chép nội dung sau từ máy chủ vào máy khách:

/var/lib/puppet/ssl/certs/<NAME>.pem
/var/lib/puppet/ssl/certs/ca.pem
/var/lib/puppet/ssl/private_keys/<NAME>.pem

Nếu bạn muốn có một cái gì đó khác với tên máy chủ, hãy sử dụng:

puppetd --fqdn=<NAME>

Và thêm vào /etc/puppet/puppet.conf nếu chạy daemon

[puppetd]
certname=<NAME>

Điều này có vẻ phức tạp hơn đối với tôi. Bạn cài đặt con rối trên máy khách, nó tạo chứng chỉ và gửi cho chủ để ký. Khi bạn ký tên vào bản gốc, máy khách sẽ bắt đầu hoạt động vào lần tiếp theo. Điều này liên quan đến các bước ít hơn. Nếu bạn thực sự muốn lưu ngay cả bước này, bạn có thể chạy một công việc định kỳ thực hiện một số việc như: cho máy chủ lưu trữ trong $ (Puppetca --list); làm con rối - ký tên $ host; xong
David Pashley

1
Điều này tốt nếu bạn có một hoặc hai máy, nhưng khi bạn khởi động và dừng máy trong đám mây, bạn không muốn phải làm điều này bằng tay, tôi có thể khởi động một máy cơ sở, chạy tập lệnh đi vào và thiết lập mọi thứ lên thông qua con rối mà không cần phải đăng nhập vào chủ rối.
Ranguard
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.