Phiên bản được hỗ trợ:hiện tại(17)16/15/14/13
Phiên bản phát triển:Devel
Phiên bản không được hỗ trợ:12/11/10/9.6/9.5/9.4/9.3/9.2/9.1/9.0/8.4/8.3/8.2/8.1/8.0
Tài kèo bóng đá c1 này dành cho phiên bản không được hỗ trợ của PostgreSQL.
Bạn có thể muốn xem cùng một trang chohiện tạiPhiên bản hoặc một trong các phiên bản được hỗ trợ khác được liệt kê ở trên thay thế.

33,18.kèo bóng đá c1

PostgreSQLCó hỗ trợ gốc để sử dụngSSLKết nối để mã hóa giao tiếp kèo bóng đá c1 khách/kèo bóng đá c1 chủ để tăng bảo mật. Nhìn thấyPhần 18.9Để biết chi tiết về phía kèo bóng đá c1 chủSSLchức năng.

libpqĐọc toàn hệ thốngOpenSSLTệp cấu hình. Theo mặc định, tệp này được đặt tênopenSSL.cnfvà nằm trong thư mục được báo cáo bởiPhiên bản OpenSSL -D. Mặc định này có thể được ghi đè bằng cách đặt biến môi trườngopenSSL_confvới tên của tệp cấu hình mong muốn.

33.18.1.Xác minh kèo bóng đá c1 khách của chứng chỉ kèo bóng đá c1 chủ

Theo mặc định,PostgreSQLsẽ không thực hiện bất kỳ xác minh nào của chứng chỉ kèo bóng đá c1 chủ. Điều này có nghĩa là có thể giả mạo danh tính kèo bóng đá c1 chủ (ví dụ bằng cách sửa đổi bản ghi DNS hoặc bằng cách tiếp quản địa chỉ IP của kèo bóng đá c1 chủ) mà không cần khách hàng biết.CA) Chứng chỉ trên một kèo bóng đá c1 tính và chứng chỉ láĐã kýbằng chứng chỉ gốc trên kèo bóng đá c1 tính khác. Nó cũng có thể sử dụng mộtTrung cấpVoikèo bóng đá c1 chỉ được ký bởi kèo bóng đá c1 chỉ gốc và kèo bóng đá c1 chỉ Lá có dấu.

Để cho phép kèo bóng đá c1 khách xác minh danh tính của kèo bóng đá c1 chủ, đặt chứng chỉ gốc lên kèo bóng đá c1 khách và chứng chỉ lá được ký bởi chứng chỉ gốc trên kèo bóng đá c1 chủ. Để cho phép kèo bóng đá c1 chủ xác minh danh tính của kèo bóng đá c1 khách, hãy đặt chứng chỉ gốc trên kèo bóng đá c1 chủ và chứng chỉ lá được ký bởi chứng chỉ gốc trên kèo bóng đá c1 khách.

Một khi một chuỗi ủy thác đã được thiết lập, có hai cách để khách hàng xác nhận chứng chỉ lá do kèo bóng đá c1 chủ gửi. Nếu tham sốSSLModeđược đặt thànhXác minh-CA, LibPQ sẽ xác minh rằng kèo bóng đá c1 chủ đáng tin cậy bằng cách kiểm tra chuỗi chứng chỉ cho đến chứng chỉ gốc được lưu trữ trên kèo bóng đá c1 khách. Nếu nhưSSLModeđược đặt thànhxác minh-đầy đủ, libpq sẽcũngXác minh rằng tên kèo bóng đá c1 chủ kèo bóng đá c1 chủ khớp với tên được lưu trữ trong chứng chỉ kèo bóng đá c1 chủ. Kết nối SSL sẽ không thành công nếu chứng chỉ kèo bóng đá c1 chủ không thể được xác minh.xác minh-đầy đủđược khuyến nghị trong hầu hết các môi trường nhạy cảm với bảo mật.

inxác minh-đầy đủ13944_14119dnsnamecó mặt. Nếu thuộc tính tên của kèo bóng đá c1 chỉ bắt đầu bằng dấu hoa thị (*), Asterisk sẽ được coi là ký tự đại diện, sẽ phù hợp với tất cả các ký tựngoại trừA DOT (.). Điều này có nghĩa là kèo bóng đá c1 chỉ sẽ không phù hợp với tên miền phụ.

Để cho phép xác minh chứng chỉ kèo bóng đá c1 chủ, một hoặc nhiều chứng chỉ gốc phải được đặt trong tệp~/.Postgresql/root.crtTrong thư mục nhà của người dùng. (Trên Microsoft Windows, tệp được đặt tên%appdata%\ postgresql \ root.crt.) Các chứng chỉ trung gian cũng nên được thêm vào tệp nếu chúng cần thiết để liên kết chuỗi chứng chỉ được gửi bởi kèo bóng đá c1 chủ với chứng chỉ gốc được lưu trữ trên kèo bóng đá c1 khách.

Mục nhập Revocation Revocation (CRL) cũng được kiểm tra nếu tệp~/.Postgresql/root.crltồn tại (%appdata%\ postgresql \ root.crltrên Microsoft Windows).

Vị trí của tệp kèo bóng đá c1 chỉ gốc và CRL có thể được thay đổi bằng cách đặt các tham số kết nốiSSLROOTCERTSSLCRLhoặc các biến môi trườngPGSSLROOTCERTPGSSLCRL.

Lưu ý

Để tương thích ngược với các phiên bản trước của PostgreSQL, nếu một tệp Ca gốc tồn tại, hành vi củaSSLMode=Yêu cầusẽ giống như củaXác minh-CA, có nghĩa là chứng chỉ kèo bóng đá c1 chủ được xác nhận đối với ca. Dựa vào hành vi này không được khuyến khích và các ứng dụng cần xác thực chứng chỉ phải luôn luôn sử dụngXác minh-CAhoặcxác minh-đầy đủ.

33.18.2.Chứng chỉ kèo bóng đá c1 khách

Nếu kèo bóng đá c1 chủ cố gắng xác minh danh tính của kèo bóng đá c1 khách bằng cách yêu cầu chứng chỉ lá của kèo bóng đá c1 khách,libpqSẽ gửi (các) kèo bóng đá c1 chỉ được lưu trữ trong tệp~/.Postgresql/postgresql.crtTrong thư mục nhà của người dùng. Các chứng chỉ phải chuỗi chứng nhận gốc do kèo bóng đá c1 chủ tin tưởng.~/.Postgresql/postgresql.keycũng phải có mặt. Trên Microsoft Windows, các tệp này được đặt tên%appdata%\ postgresql \ postgresql.crt%appdata%\ postgresql \ postgresql.key. Vị trí của kèo bóng đá c1 chỉ và tệp khóa có thể được ghi đè bởi các tham số kết nốiSSLCERTSSLKeyhoặc theo các biến môi trườngPGSSLCERTPGSSLKey.

Trên các hệ thống Unix, các quyền trên tệp khóa riêng phải không cho phép bất kỳ quyền truy cập nào vào thế giới hoặc nhóm; đạt được điều này bằng một lệnh nhưChmod 0600 ~/.Postgresql/postgresql.key. Ngoài ra, tệp có thể được sở hữu bởi root và có quyền truy cập đọc nhóm (nghĩa là0640Quyền). Thiết lập đó được dành cho các cài đặt trong đó kèo bóng đá c1 chỉ và các tệp khóa được quản lý bởi hệ điều hành.libpqSau đó, nên được thực hiện thành viên của nhóm có quyền truy cập vào các tệp kèo bóng đá c1 chỉ và khóa chính đó. (Trên Microsoft Windows, không có kiểm tra quyền tệp, vì%appdata%\ postgresqlThư mục được cho là an toàn.)

kèo bóng đá c1 chỉ đầu tiên trongPostgreSQL.CRTphải là kèo bóng đá c1 chỉ của khách hàng vì nó phải khớp với khóa riêng của khách hàng.Trung cấpVoiChứng chỉ có thể được sử dụng tùy chọn vào tệp - Làm như vậy tránh yêu cầu lưu trữ chứng chỉ trung gian trên kèo bóng đá c1 chủ (SSL_CA_FILE).

Để biết hướng dẫn tạo kèo bóng đá c1 chỉ, xemPhần 18.9.5.

33.18.3.Bảo vệ được cung cấp ở các chế độ khác nhau

Các giá trị khác nhau choSSLModeTham số cung cấp các mức bảo vệ khác nhau. SSL có thể cung cấp bảo vệ chống lại ba loại tấn công:

nghe lén

Nếu bên thứ ba có thể kiểm tra lưu lượng mạng giữa kèo bóng đá c1 khách và kèo bóng đá c1 chủ, nó có thể đọc cả thông tin kết nối (bao gồm tên người dùng và mật khẩu) và dữ liệu được truyền.SSLSử dụng mã hóa để ngăn chặn điều này.

Người đàn ông ở giữa (MITM)

Nếu bên thứ ba có thể sửa đổi dữ liệu trong khi truyền giữa kèo bóng đá c1 khách và kèo bóng đá c1 chủ, nó có thể giả vờ là kèo bóng đá c1 chủ và do đó xem và sửa đổi dữ liệuNgay cả khi nó được mã hóa. Bên thứ ba sau đó có thể chuyển tiếp thông tin và dữ liệu kết nối đến kèo bóng đá c1 chủ ban đầu, khiến không thể phát hiện cuộc tấn công này.SSLSử dụng xác minh chứng chỉ để ngăn chặn điều này, bằng cách xác thực kèo bóng đá c1 chủ cho kèo bóng đá c1 khách.

mạo danh

Nếu bên thứ ba có thể giả vờ là một khách hàng được ủy quyền, nó chỉ có thể truy cập dữ kèo bóng đá c1 mà nó không nên có quyền truy cập. Thông thường, điều này có thể xảy ra thông qua quản lý mật khẩu không an toàn.SSLSử dụng chứng chỉ kèo bóng đá c1 khách để ngăn chặn điều này, bằng cách đảm bảo rằng chỉ có chủ chứng chỉ hợp lệ mới có thể truy cập kèo bóng đá c1 chủ.

Để kết nối được SSL đã biết, việc sử dụng SSL phải được cấu hình trêncả kèo bóng đá c1 khách và kèo bóng đá c1 chủTrước khi kết nối được thực hiện. Nếu nó chỉ được cấu hình trên kèo bóng đá c1 chủ, kèo bóng đá c1 khách có thể sẽ gửi thông tin nhạy cảm (ví dụ: mật khẩu) trước khi biết rằng kèo bóng đá c1 chủ yêu cầu bảo mật cao.SSLModetham số đếnxác minh-đầy đủhoặcXác minh-CA, và cung cấp cho hệ thống một kèo bóng đá c1 chỉ gốc để xác minh chống lại. Điều này tương tự như sử dụnghttps urlđể duyệt web được mã hóa.

Một khi kèo bóng đá c1 chủ đã được xác thực, kèo bóng đá c1 khách có thể truyền dữ liệu nhạy cảm. Điều này có nghĩa là cho đến thời điểm này, kèo bóng đá c1 khách không cần biết liệu chứng chỉ sẽ được sử dụng để xác thực, giúp việc chỉ định rằng chỉ trong cấu hình kèo bóng đá c1 chủ.

tất cảSSLTùy chọn mang trên đầu dưới dạng mã hóa và trao đổi khóa, do đó, có một sự đánh đổi phải được thực hiện giữa hiệu suất và bảo mật.Bảng 33.1Minh họa các rủi ro khác nhauSSLModeGiá trị bảo vệ chống lại và câu nói nào họ đưa ra về bảo mật và chi phí.

Bảng 33.1.Mô tả chế độ SSL

SSLMode Bảo vệ không có lỗi MITMBảo vệ tuyên bố
vô hiệu hóa không Không Tôi không quan tâm đến bảo mật và tôi không muốn trả chi phí mã hóa.
Cho phép có thể không Tôi không quan tâm đến bảo mật, nhưng tôi sẽ trả chi phí mã hóa nếu kèo bóng đá c1 chủ nhấn mạnh vào nó.
ưa thích có thể không Tôi không quan tâm đến mã hóa, nhưng tôi muốn trả chi phí mã hóa nếu kèo bóng đá c1 chủ hỗ trợ nó.
Yêu cầu không Tôi muốn dữ liệu của mình được mã hóa và tôi chấp nhận chi phí. Tôi tin rằng mạng sẽ đảm bảo tôi luôn kết nối với kèo bóng đá c1 chủ tôi muốn.
Xác minh-CA phụ thuộc vào chính sách CA Tôi muốn dữ liệu của mình được mã hóa và tôi chấp nhận chi phí. Tôi muốn chắc chắn rằng tôi kết nối với một kèo bóng đá c1 chủ mà tôi tin tưởng.
xác minh-đầy đủ Tôi muốn dữ liệu của mình được mã hóa và tôi chấp nhận chi phí. Tôi muốn chắc chắn rằng tôi kết nối với một kèo bóng đá c1 chủ mà tôi tin tưởng và đó là cái tôi chỉ định.

Sự khác biệt giữaXác minh-CAxác minh-đầy đủphụ thuộc vào chính sách của gốcCA. Nếu một công khaiCAđược sử dụng,Xác minh-CACho phép kết nối với kèo bóng đá c1 chủAi đó khácCó thể đã đăng ký vớiCA. Trong trường hợp này,xác minh-đầy đủKhông nên luôn luôn được sử dụng. Nếu một địa phươngCAđược sử dụng hoặc thậm chí là kèo bóng đá c1 chỉ tự ký, sử dụngXác minh-CAthường cung cấp đủ bảo vệ.

Giá trị mặc định choSSLModeưa thích. Như được hiển thị trong bảng, điều này không có ý nghĩa gì từ quan điểm bảo mật và nó chỉ hứa hẹn hiệu suất chi phí nếu có thể.

33.18.4.Sử dụng tệp kèo bóng đá c1 khách SSL

Bảng 33.2Tóm tắt các tệp có liên quan đến thiết lập SSL trên kèo bóng đá c1 khách.

Bảng 33.2.LIBPQ/CLIENT SSL sử dụng tệp

FILE Nội dung Hiệu ứng
~/.Postgresql/postgresql.crt Chứng chỉ kèo bóng đá c1 khách Đã gửi đến kèo bóng đá c1 chủ
~/.Postgresql/postgresql.key Khóa riêng của khách hàng kèo bóng đá c1 minh kèo bóng đá c1 chỉ khách hàng được gửi bởi chủ sở hữu; không cho biết chủ sở hữu kèo bóng đá c1 chỉ là đáng tin cậy
~/.Postgresql/root.crt Cơ quan kèo bóng đá c1 chỉ đáng tin cậy Kiểm tra xem chứng chỉ kèo bóng đá c1 chủ có được ký bởi cơ quan chứng chỉ đáng tin cậy
~/.Postgresql/root.crl kèo bóng đá c1 chỉ bị thu hồi bởi cơ quan kèo bóng đá c1 chỉ Chứng chỉ kèo bóng đá c1 chủ không được có trong danh sách này

33.18.5.Khởi tạo thư viện SSL

Nếu ứng dụng của bạn khởi tạoLIBSSLvà/hoặclibcryptoThư viện vàlibpqđược xây dựng vớiSSLHỗ trợ, bạn nên gọipqinitopensslđể nóilibpqrằngLIBSSSLvà/hoặclibcryptoThư viện đã được ứng dụng của bạn khởi tạo, đểlibpqcũng sẽ không khởi tạo các thư viện đó. Tuy nhiên, điều này là không cần thiết khi sử dụngOpenSSLPhiên bản 1.1.0 trở lên, vì khởi tạo trùng lặp không còn là vấn đề.

pqinitopenssl

Cho phép các ứng dụng chọn thư viện bảo mật nào để khởi tạo.

29342_29392

KhiDO_SSLlà không,libpqSẽ khởi tạoOpenSSLThư viện trước khi mở kết nối cơ sở dữ kèo bóng đá c1. KhiDO_CRYPTOlà khác không,libcryptoThư viện sẽ được khởi tạo. Theo mặc định (nếupqinitopensslkhông được gọi), cả hai thư viện đều được khởi tạo. Khi kèo bóng đá c1 không được biên dịch, chức năng này có mặt nhưng không làm gì cả.

Nếu ứng dụng của bạn sử dụng và khởi tạoOpenSSLhoặc cơ bản của nólibcryptoThư viện, bạnphảiGọi chức năng này với số 0 cho (các) tham số thích hợp trước khi mở kết nối cơ sở dữ kèo bóng đá c1 lần đầu tiên. Ngoài ra, hãy chắc chắn rằng bạn đã thực hiện khởi tạo đó trước khi mở kết nối cơ sở dữ kèo bóng đá c1.

pqinitssl

Cho phép các ứng dụng chọn thư viện bảo mật nào để khởi tạo.

void pqinitssl (int do_ssl);

Hàm này tương đương vớipqinitopenssl (DO_SSL, DO_SSL). Nó đủ cho các ứng dụng khởi tạo cả hoặc khôngOpenSSLlibcrypto.

pqinitsslđã có mặt từPostgreSQL8.0, trong khipqinitopensslđã được thêm vàoPostgreSQL8.4, vì vậypqinitsslCó thể thích hợp hơn cho các ứng dụng cần làm việc với các phiên bản cũ hơn củalibpq.