Điểm:0

Cách chẩn đoán/sửa lỗi CloudFormation/autoscaling SSL khi tải xuống tệp

lá cờ cv

Tôi có một nhóm tự động thay đổi quy mô được tạo bởi AWS CloudFormation. Nó chạy trên Amazon Linux 2. Tuần trước, nó hoạt động tốt. Giờ đây, các phiên bản mới sẽ báo lỗi "chứng chỉ đã hết hạn" khi cố tải xuống phpMyAdmin. Nó xuất hiện khởi tạo cfn đang chạy ngon tốt và lấy các tệp từ S3 tốt, nhưng không hoạt động khi nó lấy các tệp từ xa (có vẻ như nó làm với Python).

CHỈNH SỬA: xem bên dưới, nhưng ban đầu tôi nghĩ đây là một số vấn đề với tập lệnh Python. Tôi không còn chắc chắn điều đó là đúng nữa, bởi vì nó hoạt động tốt trong một nhóm tự động thay đổi quy mô khác đang lấy các tệp khác nhau. Vì vậy ... bây giờ tôi nghĩ có vấn đề thực sự với chứng chỉ trên phpMyAdmin, nhưng ... tôi không chắc. Và tôi vẫn không biết làm thế nào để chẩn đoán thêm.

/var/log/cfn-init.log:

2021-10-06 10:08:24,895 [INFO] ------------------------Bắt đầu xây dựng ----------
-----------
2021-10-06 10:08:24,896 [DEBUG] Không đặt trình kích hoạt khởi động lại làm hỗ trợ lập lịch
không có sẵn
2021-10-06 10:08:24,898 [INFO] Bộ cấu hình đang chạy: mặc định
2021-10-06 10:08:24,899 [INFO] Đang chạy configSet default
2021-10-06 10:08:24,906 [INFO] Đang chạy config config
2021-10-06 10:08:34,173 [DEBUG] Đang cài đặt/cập nhật ['mod_ssl', 'ksh', 'httpd'] 
qua yum
2021-10-06 10:08:37,523 [INFO] Yum đã cài đặt ['mod_ssl', 'ksh', 'httpd']
2021-10-06 10:08:37,523 [DEBUG] Không có nhóm nào được chỉ định
2021-10-06 10:08:37,523 [DEBUG] Không có người dùng nào được chỉ định
2021-10-06 10:08:37,523 [DEBUG] Không có nguồn nào được chỉ định
 ... [cài đặt thành công một số tệp từ S3 ... ]

2021-10-06 10:08:37,621 [DEBUG] Viết nội dung cho /tmp/phpmyadmin.tgz
2021-10-06 10:08:37,621 [DEBUG] Truy xuất nội dung từ https://www.phpmyadmin.
net/downloads/phpMyAdmin-latest-all-languages.tar.gz
2021-10-06 10:08:37,640 [ERROR] SSLError
Traceback (cuộc gọi gần đây nhất cuối cùng):
  Tệp "/usr/lib/python3.7/site-packages/cfnbootstrap/packages/requests/packages
/urllib3/connectionpool.py", dòng 544, trong urlopen
    nội dung = nội dung, tiêu đề = tiêu đề)
  Tệp "/usr/lib/python3.7/site-packages/cfnbootstrap/packages/requests/packages
/urllib3/connectionpool.py", dòng 341, trong _make_request
    self._validate_conn(conn)
  Tệp "/usr/lib/python3.7/site-packages/cfnbootstrap/packages/requests/packages
/urllib3/connectionpool.py", dòng 762, trong _validate_conn
    conn.connect()
  Tệp "/usr/lib/python3.7/site-packages/cfnbootstrap/packages/requests/packages
/urllib3/connection.py", dòng 238, trong kết nối
    ssl_version=resolved_ssl_version)
  Tệp "/usr/lib/python3.7/site-packages/cfnbootstrap/packages/requests/packages/urllib3/util/ssl_.py", dòng 265, trong ssl_wrap_socket
    trả về context.wrap_socket(sock, server_hostname=server_hostname)
  Tệp "/usr/lib64/python3.7/ssl.py", dòng 423, trong wrap_socket
    phiên=phiên
  Tệp "/usr/lib64/python3.7/ssl.py", dòng 870, trong _create
    self.do_handshake()
  Tệp "/usr/lib64/python3.7/ssl.py", dòng 1139, trong do_handshake
    self._sslobj.do_handshake()
ssl.SSLCertVerificationError: xác minh chứng chỉ [SSL: CERTIFICATE_VERIFY_FAILED] không thành công: chứng chỉ đã hết hạn (_ssl.c:1091)
...

nhưng, nếu tôi đăng nhập vào máy, tải xuống bằng quên đi hoạt động tốt, CHỈNH SỬA không còn đúng nữa: vì vậy tôi không nghĩ đó là sự cố trên trang web từ xa, tôi nghĩ đó là vấn đề với khởi tạo cfn hoặc các tập lệnh Python có liên quan.

CHỈNH SỬA: Từ một nhóm tự động thay đổi quy mô khác, cũng được tạo bởi CloudFormation, quá trình tải xuống từ xa hoạt động:

...
2021-10-07 04:21:10,855 [DEBUG] Viết nội dung vào /tmp/mysql80.rpm
2021-10-07 04:21:10,855 [DEBUG] Truy xuất nội dung từ https://dev.mysql.com/g
et/mysql80-community-release-el7-2.noarch.rpm
2021-10-07 04:21:11,425 [DEBUG] Cài đặt chế độ cho /tmp/mysql80.rpm thành 000600
2021-10-07 04:21:11,425 [DEBUG] Đặt chủ sở hữu 0 và nhóm 0 cho /tmp/mysql80.rpm
...

Vì vậy, nó đã tải xuống thành công từ https://dev.mysql.com/, nhưng không thành công với "chứng chỉ đã hết hạn" từ https://www.phpmyadmin.net, mặc dù quên đi và truy cập trực tiếp vào đó thông qua trình duyệt không hiển thị bất kỳ lỗi nào.

kết thúc CHỈNH SỬA

Bất kỳ ý tưởng về làm thế nào để gỡ lỗi này?

Điểm:1
lá cờ cv

Câu trả lời ngắn:

Sử dụng openssl để tìm xem có chứng chỉ hết hạn hay không:

openssl s_client -showcerts -connect <falingwebsite.com>:443 | grep "chứng chỉ đã hết hạn"

Nhận chứng chỉ mới, chưa hết hạn và đính kèm vào gói AWS ca_bundle:

mèo <newcert>.pem >> /path/to/your/python/env/lib/python3.9/site-packages/cfnbootstrap/packages/requests/cacert.pem

Câu trả lời dài:

Cuối cùng, tôi đã viết một số tập lệnh python để thử và tải xuống chứng chỉ phía máy chủ, để xem có vấn đề gì xảy ra với quá trình tải xuống không. Tôi chưa bao giờ nhận được chứng chỉ được tải xuống trực tiếp với urllib3, nhưng trong khi theo đuổi điều đó trên StackOverflow, @clockwatcher đã phát hiện ra sự cố thực sự và có vẻ như nó sẽ ảnh hưởng đến những người khác chứ không chỉ với phpMyAdmin.

Nó phải làm với Hết hạn DST Root CA X3, xảy ra vào ngày 30 tháng 9. AWS không bao gồm chứng chỉ mới trong chứng chỉ được phê duyệt đi kèm của họ, vì vậy bạn phải thêm chứng chỉ mới theo cách thủ công.

Bạn có thể lấy tệp pem ISRG Root X1 tự ký từ LetsEncrypt, và sau đó thêm nó vào cfnbootstrap'S ca_cert.pem tập tin, như trên.

Bây giờ, điều này giải quyết vấn đề trong trường hợp bạn có một máy đang chạy; tuy nhiên, đây vẫn là một vấn đề đối với các nhóm tự động tính tỷ lệ vì không có cách nào dễ dàng để sử dụng

  AWS::CloudFormation::Init:
    cấu hình:
    các tập tin:
        /đường dẫn/đến/tệp:
          nguồn: https://somewhere.using.letsencrypt.com/file   

cư xử. Vì vậy, bất cứ nơi nào trong các mẫu CloudFormation của bạn sử dụng mô hình đó, sẽ cần phải được viết lại để cả tệp bạn thực sự muốn và chứng chỉ LetsEncrypt đều được tải xuống cùng với quên đi như một phần của lệnh: tiết diện. Ví dụ,

        01_get_phpmyadmin:
          lệnh: !Tham gia ["",
                       ["wget ​​-O phpmyadmin.tgz ",
                        "https://www.phpmyadmin.net/downloads/",
                        "phpMyAdmin-latest-all-languages.tar.gz"]]
          cwd: /tmp

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.