Câu hỏi:
Tôi đang cố gắng tạo một chứng chỉ (tự ký) và triển khai trên nhiều cơ sở dữ liệu và trường hợp.
Tôi tạo và sao lưu chứng chỉ với:
USE MASTER
CREATE CERTIFICATE DavesCert ENCRYPTION BY PASSWORD ='S3creT!' WITH SUBJECT = 'The master cert'
BACKUP CERTIFICATE DavesCert TO FILE = 'd:\DavesCert.cer'
WITH PRIVATE KEY ( DECRYPTION BY PASSWORD = 'S3creT!' ,
FILE = 'd:\DavesCert.pvk' ,
ENCRYPTION BY PASSWORD = 'S3creT!' );
Tôi khôi phục lại với
USE FOO
GO
CREATE CERTIFICATE ERecruitStatsGatheringCert
FROM FILE = 'd:\DavesCert.cer'
WITH PRIVATE KEY (FILE = 'd:\DavesCert.pvk',
DECRYPTION BY PASSWORD = 'S3creT!')
và nhận được lỗi sau: "Vui lòng tạo khóa chính trong cơ sở dữ liệu hoặc mở khóa chính trong phiên trước khi thực hiện thao tác này."
Tôi không muốn tạo khóa chủ cơ sở dữ liệu. Tôi rất vui khi giải mã chứng chỉ bằng mật khẩu khi cần.
Bối cảnh: Ứng dụng SaaS. Nhiều đến nhiều mối quan hệ giữa DB và cá thể.
Tôi cần mỗi DB để có thể truy vấn các số liệu thống kê của riêng mình bằng cách thực hiện một quy trình được lưu trữ để kết thúc một số cuộc gọi đến DMV để trả về số liệu thống kê.
Ứng dụng chạy dưới một tài khoản đặc quyền thấp. Do đó, DMV yêu cầu sự cho phép XEM MÁY CHỦ NHÀ NƯỚC, do đó, tôi đang triển khai việc ký các thủ tục được lưu trữ bằng certs.
Cách cơ bản để thiết lập này là:
- Tạo một chứng chỉ trong DB người dùng.
- Sao lưu / khôi phục chứng chỉ đó để làm chủ.
- Tạo đăng nhập trong master, được gán quyền đó, v.v.
- Thêm Giấy chứng nhận vào thủ tục lưu trữ.
Tôi có mã kiểm tra cho ở trên và nó hoạt động tốt, tuy nhiên mô hình không mở rộng rất tốt để triển khai trên nhiều trường hợp / dbs.
Do đó, tôi nghĩ rằng tôi muốn sử dụng cùng một chứng chỉ trên tất cả các trường hợp / trường hợp của DB.
Hạnh phúc cho những đề xuất / cách tiếp cận khác.
--Được đăng lên Stack Exchange sau đó chuyển sang đề xuất từ một mục đích sử dụng khác
ENCRYPTION BY PASSWORD
). Chứng chỉ không có Khóa riêng không thể mã hóa hoặc ký, nhưng nó có thể giải mã và xác minh. Vì vậy, chúng có thể được tạo mà không cần Khóa riêng, nhưng việc đó có hữu ích hay không phụ thuộc vào những gì cần thiết. Ngoài ra, bảo vệ, khóa chính hoặc mật khẩu, chỉ dành cho khóa riêng; khóa công khai không được bảo vệ. Vì vậy, không có khóa riêng = không cần bảo vệ :-)