Chương 1: Giới thiệu Bài toán & Các Tính năng chính Phần này cung cấp cái nhìn tổng quan về bối cảnh ra đời của Signing Service Tân Cảng, lý do tại sao hệ thống cần thiết, cùng với danh sách các tính năng cốt lõi được xây dựng để giải bài toán định danh và ký số điện tử của doanh nghiệp. 1. Bài toán Ký số & Mục tiêu Dự án Bối cảnh thực tế Tại các cảng biển và văn phòng của Tân Cảng, số lượng tài liệu, hợp đồng, chứng từ giao nhận (E-DO), hóa đơn điện tử và các văn bản điều hành nội bộ được luân chuyển mỗi ngày là cực kỳ lớn. Cách làm thủ công bằng giấy tờ truyền thống gặp phải các vấn đề: Mất nhiều thời gian in ấn, luân chuyển và lưu trữ vật lý. Rủi ro thất lạc, làm giả chứng từ hoặc chi phí bảo quản tăng cao. Khó khăn trong việc tìm kiếm, truy xuất báo cáo, hay tích hợp luồng phê duyệt tự động trên hệ thống số. Lời giải cấu trúc số hóa Để giải quyết triệt để vấn đề trên, dự án  Signing Service Tân Cảng  được hình thành. Mục tiêu của dự án là thiết lập một nền tảng  Ký số và Đóng dấu điện tử  hoàn thiện, giúp tự động hóa khâu xác thực văn bản. Nền tảng này đóng vai trò như một Service trung tâm chuyên biệt, cho phép các hệ thống nghiệp vụ (ví dụ: e-Office, Hệ thống điều hành Cảng URENCO) có thể dễ dàng gọi API để ráp chữ ký số vào tài liệu (đặc biệt là chuẩn PDF) theo đúng quy định pháp lý. Hệ thống được thiết kế theo dạng  Client - Server  để giải quyết hai nhu cầu ký song song: Ký số bằng chứng thư số tập trung (Server-side/HSM):  Server sẽ tự động đóng dấu công ty hoặc ký phê duyệt tự động khối lượng lớn tài liệu mà không cần con người can thiệp. Ký số cá nhân (Client-side/USB Token): Nhân viên cắm USB Token cá nhân vào máy tính để ký trực tiếp các văn bản được giao, đảm bảo tính chống chối bỏ. 2. Tính năng Ký số Tập trung (Server-side) Tính năng quản trị chữ ký trên Server (Signing Web Service) là trung tâm điều phối của toàn hệ thống, đáp ứng yêu cầu xử lý hàng loạt: Quản lý Chứng thư số Server-side:  Tích hợp với hệ thống  EJBCA nội bộ thông qua các cơ chế (Cache) nhanh bằng Redis, giúp xác thực chứng thư (End Entity) và quản lý hiệu lực chứng thư mà không làm nghẽn hệ thống CA. Ký tự động / Sinh chữ ký hàng loạt (Batch Signing):  Cho phép các hệ thống nghiệp vụ đẩy hàng loạt tài liệu PDF qua RESTful API, dịch vụ sẽ tự động đóng dấu (chữ ký tổ chức) và phản hồi lại file đã ký trong thời gian tính bằng phần nghìn giây. Tùy biến hiển thị chữ ký (Visual Signature): Cho phép truyền tọa độ (X, Y), số trang (Page) và hình ảnh (Con dấu đỏ/chữ ký nháy) để đính kèm trực tiếp lên bề mặt file PDF, giúp tài liệu dễ nhìn và đúng thể thức văn bản. 3. Tính năng Ký số Local (Client-side) Song song với chữ ký Server, dự án cung cấp  Signing Desktop App  - một ứng dụng nhỏ nhẹ chạy nền dưới máy cá nhân của nhân sự: Đọc & Trích xuất chứng thư từ USB Token (PKCS#11):  Tích hợp driver của đa dạng các hãng USB Token (như Viettel, VNPT, BKAV, FPT...) theo cấu hình chuẩn, đọc và lấy public key để sinh payload ký. Local Web Server trung gian:  Khởi chạy một server ở  localhost  (Port 6868/..) để frontend của hệ thống nghiệp vụ (trên trình duyệt Chrome/Edge) có thể gửi yêu cầu ký (LocalSignRequestDTO) thẳng xuống USB Token dưới máy tính. Giao diện (UI) quản lý đơn giản:  Cung cấp các cửa sổ Pop-up (sử dụng thư viện FlatLaf hiện đại) giúp người dùng: Chọn chứng thư số từ danh sách Token đang cắm. Nhập mã PIN an toàn. Hiển thị thanh tiến trình (Loading Dialog) khi đang thực hiện ráp ký tài liệu nặng. 4. Các Tính năng Hỗ trợ & Vận hành Để tạo thành một giải pháp hoàn chỉnh, Signing Service được trang bị thêm các module vệ tinh đắc lực: Chuyển đổi định dạng Office sang PDF (Format Conversion): Người dùng hệ thống nghiệp vụ không cần tự xuất file PDF tĩnh. Dịch vụ hỗ trợ nhận trực tiếp các file Word ( .doc ,  .docx ) hoặc Excel ( .xls ,  .xlsx ). Sử dụng thư viện  Aspose.Words / Aspose.Cells  tích hợp sẵn để chuyển đổi tự động văn bản thành tài liệu PDF chuẩn thức, giữ nguyên format bảng biểu trước khi thực thi việc đóng dấu chữ ký. Xử lý khéo léo các lỗi định dạng giả mạo (ví dụ: File đuôi docx nhưng bản chất đã là PDF thì tự nhận diện được để by-pass bước convert). Lưu vết và Audit Logging: Mọi hành vi gọi hệ thống từ Request OTP, lấy thông tin chứng thư, đến ký tài liệu đều được API  AuditLogAdminController  ghi nhận vào  SQL Server . Cung cấp vết thời gian (Timestamp), Client IP, User gọi API và nội dung giao dịch để phục vụ hậu kiểm, kế toán, hoặc thanh tra. API linh hoạt (URENCO APIs & Visual Only): Hỗ trợ riêng nhánh API đóng hình ảnh chữ ký không qua mã hóa chứng thư ( /sign-visual-only ) phục vụ phê duyệt nội bộ cấp thấp. Định tuyến (Routing) mượt mà các API kế thừa từ hệ thống URENCO.