Cách đặt chứng chỉ ssl trong curl php?
Nếu bạn đã từng thử kết nối với dịch vụ xóa hoặc máy chủ bằng SSL từ tập lệnh cURL hoặc PHP phía máy chủ đang chạy trên Windows Server, rất có thể bạn đã gặp phải tình trạng không thể xác minh chứng chỉ SSL của máy chủ từ xa Show Sự cố xảy ra khi bạn đang cố liên hệ với một kết nối được bảo mật SSL/TLS (và đặt tùy chọn cuộn tròn 2 thành đúng)Lỗi trông như thế này
hoặc đơn giản có thể trả về lỗi 3Vâng, vấn đề có một giải pháp rất đơn giản. CURL không thể nói chuyện trực tiếp với kho lưu trữ chứng chỉ Windows, vì vậy bạn phải cung cấp cho nó một tệp để xác thực Cơ quan cấp chứng chỉ gốc đáng tin cậy đối với Giải phápCó một số tùy chọn để lấy gói chứng chỉ CA
Tải xuống từ mạngĐể tải xuống tệp pem hiện tại, hãy truy cập vào đây. 4. (http. //Xoăn. haxx. se/ca/cacert. pem)không phải là bạn nên tin tưởng vào bất kỳ nguồn nào trên internet để đảm bảo tính hợp lệ của các gói CA này hoặc tính bảo mật của máy chủ của bạn, nhưng tôi đã xác minh (ít nhất một lần) rằng tệp này là . Tuy nhiên, nếu bạn không muốn tin tưởng một số trang web ngẫu nhiên từ tệp, bạn có thể Lấy danh sách MozillaTập lệnh chuyển đổi mk-ca-bundleCông cụ mk-ca-bundle chuyển đổi gói chứng chỉ của Mozilla sang định dạng PEM, phù hợp với (lib)curl và những thứ khác. Viết bởi Guenter Knauf Bạn cũng có thể trích xuất danh sách chứng chỉ CA từ cài đặt Firefox cục bộ của mình, nếu bạn đã cài đặt công cụ certutil. Bạn chỉ cần chạy firefox-db2pem. sh (vâng, đây là tập lệnh BASH, vì vậy bạn cần phải là Linux để chạy tập lệnh này) Xuất từ WindowsThực hiện theo các bước sau để xuất chứng chỉ CA của Tổ chức phát hành chứng chỉ gốc đáng tin cậy của bạn
Sau đó, trong ứng dụng PHP của bạn chẳng hạn, hãy thêm dòng sau TRƯỚC KHI bạn gọi 0
Nếu bạn đang sử dụng cURL, chỉ cần đổi tên tệp thành 1 và đặt tệp đó vào cùng thư mục với tệp 2 của bạn và tệp sẽ tự động phát hiện tệp đóĐó là tất cả những gì bạn cần để bắt đầu mọi thứ Hãy nhớ rằng, bạn không nhất thiết phải xuất tất cả CA. Trong trường hợp của Yubikey, máy chủ API xác thực sử dụng chứng chỉ do GoDaddy cấp, vì vậy bạn chỉ cần xuất một lần nếu không muốn phải cập nhật tệp này mỗi khi các nhà cung cấp khác nhau cập nhật chứng chỉ ROOT CA Từ PHP, bạn có thể truy cập Thư viện cURL hữu ích (libcurl) để tạo yêu cầu tới các URL bằng nhiều giao thức như HTTP, FTP, LDAP và thậm chí cả Gopher. (Nếu bạn đã dành thời gian cho dòng lệnh *nix, hầu hết các môi trường cũng có sẵn lệnh 0 sử dụng thư viện libcurl)Tuy nhiên, trên thực tế, giao thức được sử dụng phổ biến nhất có xu hướng là HTTP, đặc biệt khi sử dụng PHP để liên lạc giữa máy chủ với máy chủ. Thông thường, điều này liên quan đến việc truy cập một máy chủ web khác như một phần của cuộc gọi dịch vụ web, sử dụng một số phương thức như XML-RPC hoặc REST để truy vấn tài nguyên. Ví dụ: Delicious cung cấp API dựa trên HTTP để thao tác và đọc bài đăng của người dùng. Tuy nhiên, khi cố gắng truy cập tài nguyên HTTPS (chẳng hạn như API ngon), bạn phải thực hiện thêm một chút cấu hình trước khi có thể khiến cURL hoạt động ngay trong PHP Vấn đềNếu bạn chỉ cố truy cập HTTPS (tài nguyên được bảo vệ bằng SSL hoặc TLS) trong PHP bằng cURL, bạn có thể gặp một số khó khăn. Giả sử bạn có đoạn mã sau. (Xử lý lỗi bị bỏ qua cho ngắn gọn)
Nếu 1 trỏ tới một tài nguyên HTTPS, bạn có thể gặp lỗi như bên dưới
Vấn đề là cURL chưa được định cấu hình để tin cậy chứng chỉ HTTPS của máy chủ. Các khái niệm về chứng chỉ và PKI xoay quanh sự tin cậy của Tổ chức phát hành chứng chỉ (CA) và theo mặc định, cURL được thiết lập để không tin cậy bất kỳ CA nào, do đó, nó sẽ không tin tưởng bất kỳ chứng chỉ nào của máy chủ web. Vậy tại sao bạn không gặp sự cố khi truy cập các trang web HTTP thông qua trình duyệt web của mình? cách khắc phục nhanhCó hai cách để giải quyết vấn đề này. Đầu tiên, chúng tôi chỉ cần định cấu hình cURL để chấp nhận bất kỳ chứng chỉ máy chủ (ngang hàng) nào. Điều này không phải là tối ưu từ quan điểm bảo mật, nhưng nếu bạn không chuyển thông tin nhạy cảm qua lại, điều này có thể ổn. Chỉ cần thêm dòng sau trước khi gọi 2
Về cơ bản, điều này khiến cURL chấp nhận một cách mù quáng bất kỳ chứng chỉ máy chủ nào mà không thực hiện bất kỳ xác minh nào về việc CA nào đã ký chứng chỉ đó và liệu CA đó có đáng tin cậy hay không. Nếu bạn hoàn toàn lo lắng về dữ liệu bạn đang chuyển đến hoặc nhận từ máy chủ, bạn sẽ muốn kích hoạt xác minh ngang hàng này đúng cách. Làm như vậy phức tạp hơn một chút sửa chữa thích hợpCách khắc phục thích hợp liên quan đến việc đặt tham số 3. Điều này được sử dụng để trỏ tới chứng chỉ CA mà cURL nên tin tưởng. Do đó, mọi chứng chỉ máy chủ/ngang hàng do CA này cấp cũng sẽ được tin cậy. Để làm được điều này, trước tiên chúng ta cần lấy chứng chỉ CA. Trong ví dụ này, tôi sẽ sử dụng https. //api. xóa. cio. chúng tôi/máy chủ làm tài liệu tham khảoTrước tiên, bạn cần truy cập URL bằng trình duyệt web của mình để lấy chứng chỉ CA. Sau đó, (trong Firefox) mở chi tiết bảo mật cho trang web bằng cách nhấp đúp vào biểu tượng ổ khóa ở góc dưới bên phải Sau đó nhấp vào “Xem chứng chỉ” Mở tab “Chi tiết” của trang chứng chỉ và chọn chứng chỉ ở đầu phân cấp. Đây là chứng chỉ CA Sau đó nhấp vào "Xuất" và lưu chứng chỉ CA vào vị trí bạn đã chọn, đảm bảo chọn X. 509 Chứng chỉ (PEM) làm loại/định dạng lưu Bây giờ, chúng tôi cần sửa đổi thiết lập cURL để sử dụng chứng chỉ CA này, với __ 3 được đặt để trỏ đến nơi chúng tôi đã lưu tệp chứng chỉ CA vào________số 8Tùy chọn khác mà tôi đã đưa vào, có thể đặt 5 thành các giá trị số nguyên sau
Nếu bạn đặt 0 thành false, thì từ góc độ bảo mật, việc bạn đặt 5 thành gì không thực sự quan trọng, vì nếu không có xác minh chứng chỉ ngang hàng, máy chủ có thể sử dụng bất kỳ chứng chỉ nào, kể cả chứng chỉ tự ký đã được đảm bảo . Vì vậy, cài đặt này thực sự chỉ phù hợp nếu bạn đã bật xác minh chứng chỉĐiều này đảm bảo rằng không chỉ bất kỳ chứng chỉ máy chủ nào sẽ được phiên cURL của bạn tin cậy. Ví dụ: nếu kẻ tấn công bằng cách nào đó chuyển hướng lưu lượng truy cập từ api. ngon. com đến máy chủ của họ, phiên cURL ở đây sẽ không được khởi chạy đúng cách, vì kẻ tấn công sẽ không có quyền truy cập vào chứng chỉ máy chủ (i. e. sẽ không có khóa riêng) được CA tin cậy mà chúng tôi đã thêm. Các bước này xuất hiệu quả CA đáng tin cậy từ trình duyệt web sang cấu hình cURL Thêm thông tinNếu bạn có chứng chỉ CA, nhưng nó không ở định dạng PEM (i. e. nó ở định dạng nhị phân hoặc DER không được mã hóa Base64), bạn sẽ cần sử dụng thứ gì đó như OpenSSL để chuyển đổi nó sang định dạng PEM. Lệnh chính xác khác nhau tùy thuộc vào việc bạn đang chuyển đổi từ định dạng PKCS12 hay DER Có một tùy chọn 2 cho phép bạn chỉ định một thư mục chứa nhiều chứng chỉ CA để tin cậy. Nhưng nó không đơn giản như bỏ mọi chứng chỉ CA trong thư mục này. Thay vào đó, các chứng chỉ CA này phải được đặt tên chính xác và tiện ích OpenSSL 3 có thể được sử dụng để thiết lập đúng thư mục này để cURL sử dụng
Curl có kiểm tra chứng chỉ SSL không?curl thực hiện xác thực chứng chỉ SSL ngang hàng theo mặc định . Điều này được thực hiện bằng cách sử dụng kho lưu trữ chứng chỉ mà thư viện SSL có thể sử dụng để đảm bảo chứng chỉ máy chủ của máy ngang hàng hợp lệ.
Curl có sử dụng SSL không?Curl sẽ tự động thiết lập kết nối SSL với máy chủ . Khi Curl gửi yêu cầu tới một URL HTTPS, nó sẽ kiểm tra chứng chỉ SSL đối với kho lưu trữ chứng chỉ của CA cục bộ.
PHP có an toàn không?Curl hỗ trợ SSL v2, v3 và TLS phiên bản 1. 0 đến 1. 3. Chỉ TLS 1. 2 và TLS 1. 3 được coi là an toàn hôm nay . Trên thực tế, hầu hết các trình duyệt không còn chấp nhận kết nối với SSL và TLS 1. 0 và TLS 1. 1.
Tôi có thể sử dụng curl trong PHP không?Công dụng của cURL trong PHP
. cURL giúp kết nối giữa các trang web và tên miền khác nhau trở nên đơn giản. Lấy một bản sao của tài liệu của một trang web. Gửi biểu mẫu tự động, xác thực và sử dụng cookie. cURL is a PHP extension that allows you to use the URL syntax to receive and submit data. cURL makes it simple to connect between various websites and domains. Obtaining a copy of a website's material. Submission of forms automatically, authentication and cookie use. |