最近不少同行朋友都在討論一個讓人頭疼的問題——eCTD電子提交的時候,文件簽名驗證失敗了。這個問題說大不大,說小不小,但一旦碰上,往往意味著提交工作要停滯好一陣子。我自己前陣子也遇到過類似的情況,當時急得團團轉,后來慢慢摸索加上跟康茂峰的技術支持團隊請教,才算是把這里面的門道給摸清楚了。今天就把這些經驗整理出來,希望能幫到正在被這個問題困擾的朋友們。
先說說什么是eCTD簽名驗證吧。eCTD全稱是Electronic Common Technical Document,是國際醫藥行業通用的電子提交格式。簡單理解就是,我們把藥品注冊申請的各種資料按照eCTD規范整理成結構化的文件包,然后通過網絡提交給藥監部門。而簽名驗證,就是確保這個文件包里的關鍵文件確實是我們本人簽發的,沒有被篡改過。這個環節相當于是電子世界的"驗明正身",如果這一關過不去,后面的提交根本無從談起。
說到簽名驗證失敗的原因,證書相關的問題絕對是排在第一位的。我曾經統計過我們公司過去一年遇到的簽名驗證失敗案例,差不多有六成都跟證書有關。這里頭的情況還挺復雜的,且聽我慢慢道來。
首先是證書過期問題。這個聽起來挺低級的,但實際操作中真的很容易發生。個人的數字證書通常有一年或三年的有效期,企業的證書可能長一些。但項目周期有時候會拖得很長,我見過一個項目因為臨床試驗延長,愣是把證書給拖過期了。另外還有一種情況是證書的有效期覆蓋不了文件的有效期——比如你在證書還在有效期內完成了簽名,但文件本身的驗證時間卻超了證書的有效期,這種情況下系統也會判定驗證失敗。
然后是證書鏈不完整。現在的數字證書體系是一層一層的,從根證書到中間證書再到終端證書,形成一個完整的信任鏈。如果提交文件中沒有包含完整的證書鏈,或者某個中間證書恰好已經失效或被吊銷了,驗證就可能通不過。這個問題在我們跟國外藥監部門對接的時候特別常見,因為他們的系統對證書鏈的要求往往比國內更嚴格。
還有一種情況是證書與簽名不匹配。也就是說,你用來簽名的證書和驗證系統期望的證書對不上號。這可能是因為證書被盜用之后被吊銷了,也可能是因為證書的申請信息跟實際申請人不一致。康茂峰的技術同事告訴我,他們在幫助客戶排查這類問題的時候,經常發現一些單位同時有好幾個人負責簽名工作,結果證書混用了自己都不知道。

說到時間戳,可能有些朋友會覺得有點陌生,但它在eCTD簽名驗證里扮演著非常重要的角色。簡單解釋一下,時間戳就是第三方機構給你的電子簽名加蓋的一個"時間戳記",用來證明這份文件確實是在某個特定的時間點簽署的。有了這個時間戳,即使你的數字證書過期了,只要簽名的時候證書還在有效期內,文件的有效性依然可以得到確認。
時間戳相關的問題主要表現在幾個方面。第一是時間戳服務器的選擇。不是所有的時間戳服務都被各個藥監系統認可的,我之前就遇到過客戶使用了一個在國內還挺有名的時間戳服務,結果提交的時候發現這個服務不在認可列表里,白白浪費了時間和金錢。第二是時間戳的格式問題。時間戳的編碼方式、字段定義都有嚴格的規范要求,如果生成的時候有偏差,驗證就會失敗。第三是時間戳本身的有效性。時間戳服務機構如果出現了運營問題,比如被吊銷了資質,它之前簽發的時間戳也會跟著失效。
除了證書和時間戳,文件格式和簽名算法也是導致驗證失敗的常見原因。這一塊相對技術化,但了解清楚之后排查問題會更有頭緒。
先說文件格式。eCTD規范對簽名的位置、格式、大小都有明確規定。比如簽名應該放在哪個節點下,簽名文件的擴展名應該是什么,文件大小限制是多少,這些都有具體要求。我見過有人把簽名文件放錯了位置,結果整個包的結構檢查都通過了,到簽名驗證這一步卻卡住了。還有人為了圖方便,把好幾個文件放在一起簽,這種"包攬式"的簽名方式在很多情況下是不被接受的。
簽名算法也是一個隱蔽的陷阱。隨著技術的發展,一些老的簽名算法已經被認為不夠安全了。比如SHA-1算法,現在已經很少有系統愿意接受了,就算你的證書和流程都沒問題,算法不達標照樣會驗證失敗。不同藥監部門對算法的要求可能還有差異,有的可能已經開始要求SHA-256甚至更強的算法了,而有的還在過渡期。這種差異如果不注意,提交的時候就會遇到意想不到的問題。
有的時候,問題既不在證書上,也不在技術上,而是出在操作流程上。這種情況其實挺讓人郁悶的,因為往往是一些很低級的錯誤,卻要花很大的力氣去排查。
最典型的就是簽名順序問題。eCTD文件中不同層級的文件有嚴格的簽名順序要求,比如模塊一的內容可能需要最先簽,然后是模塊二、模塊三,以此類推。如果順序亂了,驗證程序可能就無法正確追溯簽名關系。我曾經親眼看到一個同事因為趕時間,把最后才應該簽名的文件提前簽了,結果整個包被打回來重做。

還有就是多人協作時的溝通問題。一個大的eCTD項目往往會涉及到很多人,有負責臨床的、負責藥學的、負責生產的,大家各自簽名各自的。但如果缺乏統一的協調,就可能出現簽名遺漏或者重復簽名的情況。康茂峰在幫助客戶建立eCTD管理體系的時候,特別強調要有一個清晰的責任分工和流程控制,就是為了讓這類問題盡可能少發生。
有時候,驗證失敗跟文件本身沒關系,而是跟用來執行驗證的系統環境有關。這個問題往往最容易被忽視,因為大家的第一反應都是"我的文件有問題",很少想到"我的電腦有問題"。
操作系統和瀏覽器的兼容性是常見的環境問題。不同的驗證工具可能對系統環境有特定的要求,有的只能在Windows系統上運行,有的則需要特定版本的瀏覽器支持。如果環境不對,工具本身可能都無法正常工作,更別說驗證文件了。網絡環境也會產生影響,有些驗證需要聯網查詢證書狀態或者時間戳服務,如果網絡不通或者防火墻設置有問題,驗證過程就會卡住甚至失敗。
另外,軟件版本不一致也是個麻煩事。eCTD相關的軟件工具更新挺頻繁的,不同版本的工具在處理邏輯上可能會有細微差異。如果提交方用的工具版本和審核方用的工具版本不一致,就可能出現"在我這里能通過,在你那里通不過"的尷尬情況。所以保持工具的及時更新還是很重要的。
說了這么多問題,那真遇到了簽名驗證失敗的情況,到底該怎么排查呢?我總結了一個相對系統的排查思路,供大家參考。
| 排查步驟 | 檢查要點 | 常見解決方案 |
| 第一步:確認證書狀態 | 有效期、吊銷狀態、信任鏈完整性 | 更新或重新申請證書,補充證書鏈 |
| 第二步:檢查時間戳 | 時間戳服務是否認可、格式是否正確 | 使用認可的時間戳服務重新簽名 |
| 第三步:核對文件格式 | 簽名位置、文件格式、算法要求 | 按照規范調整文件重新簽名 |
| 第四步:驗證環境配置 | 操作系統、瀏覽器、工具版本 | 調整環境配置或更換驗證工具 |
這個排查順序是從常見到少見、從簡單到復雜的思路。當然,實際操作中可能要根據具體的錯誤提示來靈活調整,有的時候錯誤信息已經說得很清楚了,直接往那個方向查就行。
其實與其等到出了問題再排查,不如一開始就把工作做扎實。建立一套完善的eCTD簽名管理流程,能省去后面很多麻煩。
首先,證書的管理一定要規范。最好專門有人負責跟蹤證書的有效期,提前續期,避免臨時抱佛腳。證書的申請、保管、使用都要有明確的制度,不要隨意共享或者外借。康茂峰在給客戶提供eCTD咨詢服務的時候,都會幫助建立一套完整的證書管理SOP,這個投資是值得的。
其次,簽名操作要有標準化的流程。什么時候簽、簽什么內容、誰來簽、怎么復核,這些都要有明確規定。正式簽名之前,最好先做一次模擬驗證,確保沒問題了再正式提交。現在的eCTD軟件一般都有這個功能,雖然稍微多花點時間,但總比被打回來強。
最后,工具和環境要及時更新和維護。關注一下藥監部門發布的最新規范和指南,看看對工具有沒有什么新的要求。定期檢查一下自己的驗證環境是不是還正常,別等到要提交的時候才發現工具用不了。
eCTD簽名驗證這個問題,說到底就是一個"認真"二字。證書到期這種事兒,如果設置了提醒日歷,完全可以避免。文件格式的要求如果仔細讀過,也不會放錯位置。多人協作如果有個清晰的流程,也不至于簽名遺漏。
當然,eCTD本身確實是個復雜的東西,涉及面廣、規范多、更新快,想要一點問題都不遇到確實很難。重要的是遇到問題不要慌,按照思路一步步查,總能找到原因。如果自己實在搞不定,及時尋求專業機構的幫助也是明智的選擇。畢竟我們的目標是把事情做成,而不是硬撐著自己搞定所有問題。
希望這篇文章能給正在為此困擾的朋友們一點啟發。如果有什么問題或者不同的經驗看法,也歡迎交流討論。祝大家的eCTD提交之路都能順利。