Phiên bản được hỗ trợ:hiện tại(17) /16 / 15 / 14 / 13
Phiên bản phát triển:18 / Devel
Phiên bản soi kèo bóng đá truoctran đượ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 liệu này dành cho phiên bản soi kèo bóng đá truoctran đượ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ế.

soi kèo bóng đá truoctran31.17. SSL Ủng hộ

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

libpqĐọc toàn hệ thốngOpenSSLTệp cấu hình. Qua 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ể bị ghi đè bằng cách đặt biến môi trườngopenSSL_confvới tên của mong muốn Tệp cấu hình.

31.17.1. Giấy soi kèo bóng đá truoctran nhận xác minh

Theo mặc định,PostgreSQLWill không thực hiện bất kỳ xác minh của chứng chỉ soi kèo bóng đá truoctran chủ. Cái này có nghĩa là có thể giả mạo danh tính soi kèo bóng đá truoctran chủ (đối với Ví dụ bằng cách sửa đổi bản ghi DNS hoặc bằng cách tiếp quản soi kèo bóng đá truoctran chủ Địa chỉ IP) mà không có khách hàng biết. Để ngăn chặn giả mạo,SSLsoi kèo bóng đá truoctran chỉ phải xác minh phải được sử dụng.

Nếu tham sốSSLModeđược đặt thànhXác minh-CA, libpq sẽ xác minh rằng soi kèo bóng đá truoctran chủ đáng tin cậy bằng cách kiểm tra chuỗi chứng chỉ lên tới Cơ quan chứng chỉ đáng tin cậy (CA). Nếu nhưSSLModeIS Đặt thànhxác minh-đầy đủ, libpq sẽcũngXác minh rằng Tên soi kèo bóng đá truoctran chủ soi kèo bóng đá truoctran chủ khớp với chứng chỉ của nó. Kết nối SSL sẽ thất bại nếu chứng chỉ soi kèo bóng đá truoctran chủ không thể được xác minh.xác minh-đầy đủđược khuyến nghị trong hầu hết môi trường nhạy cảm với bảo mật.

inxác minh-đầy đủMODE, TheCN(Tên chung) thuộc tính của chứng chỉ là phù hợp với tên soi kèo bóng đá truoctran chủ. NếuCNthuộc tính bắt đầu bằng dấu hoa thị (*), nó sẽ được coi là ký tự đại diện và sẽ khớp với tất cả các ký tựngoại trừA DOT (.). Điều này có nghĩa là chứng chỉ sẽ không khớp tên miền phụ. Nếu kết nối được thực hiện bằng địa chỉ IP Thay vì tên soi kèo bóng đá truoctran chủ, địa chỉ IP sẽ được khớp (không có thực hiện bất kỳ tra cứu DNS nào).

Để cho phép xác minh chứng chỉ soi kèo bóng đá truoctran chủ, chứng chỉ của một hoặc nhiều đáng tin cậyCAs Phải được đặt trong tệp~/.Postgresql/root.crtTrong nhà của người dùng Thư mục. (Trên Microsoft Windows, tệp được đặt tên%appdata%\ postgresql \ root.crt.)

Danh sách thu hồi soi kèo bóng đá truoctran chỉ (CRL) Các mục 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 soi kèo bóng đá truoctran chỉ gốc và CRL có thể là Đã thay đổi bằng cách đặt 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 trước đó Phiên bản 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ưXác minh-CA, có nghĩa là soi kèo bóng đá truoctran chủ Giấy chứng nhận được xác nhận đối với CA. Dựa vào điều này hành vi 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 đủ.

31.17.2. Chứng chỉ soi kèo bóng đá truoctran khách

Nếu soi kèo bóng đá truoctran chủ yêu cầu chứng chỉ soi kèo bóng đá truoctran khách đáng tin cậy,libpqSẽ gửi soi kèo bóng đá truoctran chỉ được lưu trữ trong Tệp~/.Postgresql/postgresql.crtTrong nhà của người dùng Thư mục. Giấy soi kèo bóng đá truoctran nhận phải được ký bởi một trong những Cơ quan soi kèo bóng đá truoctran chỉ (CA) Được tin tưởng bởi soi kèo bóng đá truoctran chủ. Một tệp khóa riêng phù hợp~/.Postgresql/postgresql.keycũng phải là hiện tại. Tệp khóa riêng soi kèo bóng đá truoctran được cho phép bất kỳ quyền truy cập nào thế giới hoặc nhóm; Đạt được điều này bằng lệnhChmod 0600 ~/.Postgresql/postgresql.key. TRÊN Microsoft Windows Các tệp này được đặt tên%appdata%\ postgresql \ postgresql.crt%appdata%\ postgresql \ postgresql.key, Và không có kiểm tra quyền đặc biệt kể từ khi thư mục được cho là an toàn. Vị trí của soi kèo bóng đá truoctran chỉ và khóa Các tệp có thể được ghi đè bởi các tham số kết nốiSSLCERTSSLKeyhoặc các biến môi trườngPGSSLCERTPGSSLKEY.

Trong một số trường hợp, chứng chỉ soi kèo bóng đá truoctran khách có thể được ký bởi một"Trung cấp"Chứng chỉ thẩm quyền, thay vì một quyền được tin tưởng trực tiếp bởi soi kèo bóng đá truoctran chủ. Để sử dụng chứng chỉ như vậy, hãy thêm chứng chỉ Cơ quan ký hợp đồng vớiPostgreSQL.CRTTệp, sau đó là cha mẹ của nó soi kèo bóng đá truoctran chỉ của Cơ quan, v.v. lên đến"Root"Cơ quan được soi kèo bóng đá truoctran chủ tin tưởng. Chứng chỉ gốc phải được bao gồm trong mọi trường hợp trong đóPostgreSql.Crtchứa nhiều hơn một giấy soi kèo bóng đá truoctran nhận.

Lưu ý rằngroot.crtliệt kê CAS cấp cao nhất được coi là đáng tin cậy để ký vào soi kèo bóng đá truoctran chủ Giấy chứng nhận. Về nguyên tắc, nó không cần liệt kê CA đã ký chứng chỉ của khách hàng, mặc dù trong hầu hết các trường hợp CA sẽ cũng được tin tưởng cho chứng chỉ soi kèo bóng đá truoctran chủ.

31.17.3. Bảo vệ được cung cấp trong Các chế độ khác nhau

Các giá trị khác nhau choSSLModeTham số cung cấp các cấp độ khác nhau của sự bảo vệ. SSL có thể bảo vệ chống lại ba loại Tấn công:

Bảng 31-2. SSL tấn công

loại Mô tả
nghe lén Nếu bên thứ ba có thể kiểm tra lưu lượng mạng giữa soi kèo bóng đá truoctran khách và soi kèo bóng đá truoctran chủ, nó có thể đọc cả hai 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 cái 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 soi kèo bóng đá truoctran khách và soi kèo bóng đá truoctran chủ, nó có thể giả vờ là soi kèo bóng đá truoctran 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 kết nối thông tin và dữ liệu cho soi kèo bóng đá truoctran chủ gốc, làm cho nó Không thể phát hiện cuộc tấn công này. Các vectơ phổ biến để làm Điều này bao gồm ngộ độc DNS và chiếm quyền điều khiển địa chỉ, theo đó khách hàng được chuyển đến một soi kèo bóng đá truoctran chủ khác hơn dự định. Ngoài ra còn có một số cuộc tấn công khác các phương thức có thể thực hiện điều 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 soi kèo bóng đá truoctran chủ đến khách hàng.
mạo danh Nếu bên thứ ba có thể giả vờ là người được ủy quyền soi kèo bóng đá truoctran khách, nó chỉ cần truy cập dữ liệu mà nó không nên có truy cập vào. Thông thường, điều này có thể xảy ra thông qua không an toàn Quản lý mật khẩu.SSLSử dụng chứng chỉ soi kèo bóng đá truoctran khách để ngăn chặn điều này, bằng cách đảm bảo rằng chỉ có những người nắm giữ hợp lệ Chứng chỉ có thể truy cập soi kèo bóng đá truoctran chủ.

Để kết nối được biết đến an toàn, việc sử dụng SSL phải được định cấu hình trênCả hai soi kèo bóng đá truoctran khách và soi kèo bóng đá truoctran chủTrước khi kết nối được thực hiện. Nếu như Nó chỉ được cấu hình trên soi kèo bóng đá truoctran chủ, soi kèo bóng đá truoctran khách có thể kết thúc gửi thông tin nhạy cảm (ví dụ: mật khẩu) trước khi biết Rằng soi kèo bóng đá truoctran chủ yêu cầu bảo mật cao. Trong libpq, an toàn Các kết nối có thể được đảm bảo bằng cách đặtSSLModetham số đếnxác minh-đầy đủhoặcXác minh-CA, và cung cấp cho hệ thống một gốc rễ Giấy soi kèo bóng đá truoctran nhận để 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 soi kèo bóng đá truoctran chủ đã được xác thực, soi kèo bóng đá truoctran khách có thể vượt qua dữ liệu nhạy cảm. Điều này có nghĩa là cho đến thời điểm này, khách hàng không cần biết liệu chứng chỉ sẽ được sử dụng cho xác thực, làm cho an toàn khi chỉ định rằng chỉ trong Cấu hình soi kèo bóng đá truoctran chủ.

tất cảSSLTùy chọn mang theo chi phí dưới dạng mã hóa và trao đổi khóa, vì vậy là một sự đánh đổi phải được thực hiện giữa hiệu suất và bảo vệ. Bảng sau đây minh họa những rủi ro khác biệtSSLModegiá trị bảo vệ chống lại, và những gì họ đưa ra tuyên bố về bảo mật và trên soi kèo bóng đá truoctran:

Bảng 31-3. Mô tả chế độ SSL

SSLMode Bảo vệ soi kèo bóng đá truoctran có lỗi MITMBảo vệ câu lệnh
vô hiệu hóa soi kèo bóng đá truoctran soi kèo bóng đá truoctran Tôi soi kèo bóng đá truoctran quan tâm đến bảo mật và tôi soi kèo bóng đá truoctran muốn Trả chi phí mã hóa.
cho phép có thể soi kèo bóng đá truoctran Tôi không quan tâm đến bảo mật, nhưng tôi sẽ trả tiền Chi phí mã hóa nếu soi kèo bóng đá truoctran chủ khăng khăng Nó.
ưa thích có thể soi kèo bóng đá truoctran Tôi không quan tâm đến mã hóa, nhưng tôi muốn trả tiền Chi phí mã hóa nếu soi kèo bóng đá truoctran chủ hỗ trợ Nó.
Yêu cầu soi kèo bóng đá truoctran Tôi muốn dữ liệu của mình được mã hóa và tôi chấp nhận trên không. Tôi tin rằng mạng sẽ đảm bảo tôi Luôn kết nối với soi kèo bóng đá truoctran chủ tôi muốn.
Xác minh-CA phụ thuộc vào CA-Policy Tôi muốn dữ liệu của mình được mã hóa và tôi chấp nhận trên không. Tôi muốn chắc chắn rằng tôi kết nối với một soi kèo bóng đá truoctran 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 trên không. Tôi muốn chắc chắn rằng tôi kết nối với một soi kèo bóng đá truoctran chủ 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 soi kèo bóng đá truoctran chủAi đó khácCó thể đã đăng ký với​​CA. Trong trường hợp này,xác minh-đầy đủ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à tự ký soi kèo bóng đá truoctran chỉ, sử dụngXác minh-CAthường xuyên 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 soi kèo bóng đá truoctran có ý nghĩa 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ể. Nó chỉ được cung cấp là mặc định cho khả năng tương thích ngược và soi kèo bóng đá truoctran được đề xuất trong các triển khai an toàn.

31.17.4. Sử dụng tệp SSL

Bảng 31-4. LIBPQ/CLIENT SSL sử dụng tệp

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

31.17.5. Thư viện SSL khởi tạo

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ằnglibsslvà/hoặclibcryptoThư viện đã được ứng dụng của bạn khởi tạo, đểlibpqcũng sẽ soi kèo bóng đá truoctran khởi tạo những thư viện. Nhìn thấyhttp: //h71000.www7.hp.com/doc/83final/ba554_90007/ch04.htmlĐể biết chi tiết về API SSL.

pqinitopenssl

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

void pqinitopenssl (int do_ssl, int do_crypto);

KhiDO_SSLlà khác soi kèo bóng đá truoctran,libpqSẽ khởi tạo TheOpenSSLThư viện Trước khi mở kết nối cơ sở dữ liệu. Khido_cryptolà khác soi kèo bóng đá truoctran,libcryptoThư viện sẽ được khởi tạo. Theo mặc định (nếupqinitopensslkhông được gọi), cả hai Thư viện được khởi tạo. Khi soi kèo bóng đá truoctran không biên dịch, chức năng này có mặt nhưng không Không có gì.

Nếu ứng dụng của bạn sử dụng và khởi tạoOpenSSLhoặc nó cơ bảnlibcryptoThư viện, Bạnphảicuộc gọi chức năng này với số 0 cho thích hợp (các) tham số Trước khi mở kết nối cơ sở dữ liệu. Cũng 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ữ liệu.

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ó là đủ cho các ứng dụng khởi tạo cả hai hoặc soi kèo bóng đá truoctranOpenSSLlibcrypto.

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