דילוג לתוכן
  • דף הבית
  • קטגוריות
  • פוסטים אחרונים
  • משתמשים
  • חיפוש
  • חוקי הפורום
כיווץ
תחומים

תחומים - פורום חרדי מקצועי

💡 רוצה לזכור קריאת שמע בזמן? לחץ כאן!
  1. דף הבית
  2. תכנות
  3. חתימת מסמך PDF

חתימת מסמך PDF

מתוזמן נעוץ נעול הועבר תכנות
25 פוסטים 6 כותבים 1.1k צפיות
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • yossizY מנותק
    yossizY מנותק
    yossiz
    השיב למנצפך ב נערך לאחרונה על ידי
    #7

    @מנצפך אמר בחתימת מסמך PDF:

    עכשיו, אם אני מתקין את ה public.crt על המחשב שלי, הוא גם יוכל לבדוק את אמינות החתימה ביחס למי חתם אותה. נכון?

    לכאורה אין ענין להתקין אותו. החלק ה-public מוטמע בPDF וקורא הPDF בודק מולו אם הPDF שונתה אחרי החתימה.

    📧 יוסי@מייל.קום | 🌎 בלוג | ☕ קפה

    תגובה 1 תגובה אחרונה
    0
    • upsilon01U מנותק
      upsilon01U מנותק
      upsilon01
      השיב למנצפך ב נערך לאחרונה על ידי
      #8

      @מנצפך

      הסיומת key לא מייצג פורמט מסוים
      pem לעומת זאת הוא פורמט(וסטנדרט)

      מן הסתם הקובץ שיצרת הוא בפורמט pem

      תגובה 1 תגובה אחרונה
      1
      • מנצפךמ מנותק
        מנצפךמ מנותק
        מנצפך
        כתב ב נערך לאחרונה על ידי
        #9

        למעשה לא הצלחתי לחתום ב NodeJS.
        מישהו הצליח?

        upsilon01U תגובה 1 תגובה אחרונה
        0
        • upsilon01U מנותק
          upsilon01U מנותק
          upsilon01
          השיב למנצפך ב נערך לאחרונה על ידי
          #10

          @מנצפך-0

          לא ניסיתי, אבל זה נראה פשוט

          התקנה:

          npm i -S node-signpdf node-forge
          

          חתימה:

          import signer from 'node-signpdf';
           
          const signedPdf = signer.sign(
            fs.readFileSync(PATH_TO_PDF_FILE)
            fs.readFileSync(PATH_TO_P12_CERTIFICATE),
          );
          

          אימות:

          import signer from 'node-signpdf';
          ...
           
          const signedPdfBuffer = signer.sign(pdfBuffer, p12Buffer);
          const {verified} = signer.verify(signedPdfBuffer);
          
          מנצפךמ תגובה 1 תגובה אחרונה
          0
          • מנצפךמ מנותק
            מנצפךמ מנותק
            מנצפך
            השיב לupsilon01 ב נערך לאחרונה על ידי
            #11

            @upsilon01 זה ב TS?
            צריך טיפה לשנות בשביל JS.

            תגובה 1 תגובה אחרונה
            0
            • מנצפךמ מנותק
              מנצפךמ מנותק
              מנצפך
              כתב ב נערך לאחרונה על ידי
              #12

              @upsilon01 ניסיתי את החתימה.
              נתן לי שגיאה.

              תגובה 1 תגובה אחרונה
              0
              • מנצפךמ מנותק
                מנצפךמ מנותק
                מנצפך
                כתב ב נערך לאחרונה על ידי
                #13

                @upsilon01 הוא כותב לי

                Error: Could not find ByteRange placeholder: /ByteRange [0 /********** /********** /**********]
                
                י תגובה 1 תגובה אחרונה
                0
                • מנצפךמ מנותק
                  מנצפךמ מנותק
                  מנצפך
                  כתב ב נערך לאחרונה על ידי מנצפך
                  #14

                  אגב, עשיתי את הקוד טיפה שונה שיתאים ל JS:

                  var signer = require('node-signpdf');
                  var fs = require('fs');
                  var PATH_TO_PDF_FILE = './sample.pdf';
                  var PATH_TO_P12_CERTIFICATE = './private.key';
                  
                  const signedPdf = signer.default.sign(
                      fs.readFileSync(PATH_TO_PDF_FILE),
                      fs.readFileSync(PATH_TO_P12_CERTIFICATE),
                  ); 
                  
                  תגובה 1 תגובה אחרונה
                  0
                  • א מנותק
                    א מנותק
                    אהרן
                    כתב ב נערך לאחרונה על ידי
                    #15
                    import signer from 'node-signpdf';
                    

                    עלול להיות שווה ל

                    var signer = require('node-signpdf').signer;
                    

                    בדוק מהו האוביקט המתקבל.

                    תגובה 1 תגובה אחרונה
                    1
                    • מנצפךמ מנותק
                      מנצפךמ מנותק
                      מנצפך
                      כתב ב נערך לאחרונה על ידי
                      #16

                      @אהרן אמר בחתימת מסמך PDF:

                      var signer = require('node-signpdf').signer;

                      לא. זה undefined.

                      תגובה 1 תגובה אחרונה
                      0
                      • מנצפךמ מנותק
                        מנצפךמ מנותק
                        מנצפך
                        כתב ב נערך לאחרונה על ידי
                        #17

                        בכל אופן נראה שהשגיאה כאן היא ביישום של החתימה ולא בהגדרת המודל.

                        תגובה 1 תגובה אחרונה
                        0
                        • י מנותק
                          י מנותק
                          יוסף בן שמעון
                          השיב למנצפך ב נערך לאחרונה על ידי
                          #18

                          @מנצפך אמר בחתימת מסמך PDF:

                          @upsilon01 הוא כותב לי

                          Error: Could not find ByteRange placeholder: /ByteRange [0 /********** /********** /**********]
                          

                          לזכרוני אם לא מוסיפים ארגומנט שמגדיר את הקידוד, הוא קורא את הקובץ בלי שום קידוד וזה יכול להסביר את הודעת השגיאה, נסה כך:

                          fs.readFileSync(PATH_TO_PDF_FILE, 'utf8')
                          fs.readFileSync(PATH_TO_P12_CERTIFICATE, 'utf8'),

                          תגובה 1 תגובה אחרונה
                          1
                          • מנצפךמ מנותק
                            מנצפךמ מנותק
                            מנצפך
                            כתב ב נערך לאחרונה על ידי
                            #19

                            @יוסף-בן-שמעון ברגע שאני מוסיך uft8 הוא זורק לי שגיאה:

                            Error: PDF expected as Buffer
                            

                            או

                            Error: p12 certificate expected as Buffer.
                            

                            בהתאמה לשינוי שאני עושה.

                            א תגובה 1 תגובה אחרונה
                            0
                            • א מנותק
                              א מנותק
                              אהרן
                              השיב למנצפך ב נערך לאחרונה על ידי
                              #20

                              @מנצפך
                              נסית לבחור בקידוד באפר?

                              מנצפךמ תגובה 1 תגובה אחרונה
                              0
                              • מנצפךמ מנותק
                                מנצפךמ מנותק
                                מנצפך
                                השיב לאהרן ב נערך לאחרונה על ידי
                                #21

                                @אהרן מה זאת אומרת? אני חושב שהברירת מחדל שלו היא להיות buffer.

                                תגובה 1 תגובה אחרונה
                                0
                                • א מנותק
                                  א מנותק
                                  אהרן
                                  כתב ב נערך לאחרונה על ידי
                                  #22

                                  נסה 'binary'

                                  תגובה 1 תגובה אחרונה
                                  0
                                  • dovidD מנותק
                                    dovidD מנותק
                                    dovid ניהול
                                    השיב למנצפך ב נערך לאחרונה על ידי
                                    #23

                                    למרות שהרבה דברים נענו וכפי הנראה @מנצפך יודע כבר את התשובות בכל אופן אכתוב לטובת הקוראים האחרים את התשובות מסודר.
                                    @מנצפך אמר בחתימת מסמך PDF:

                                    1. איך בדיוק נקראת החתימה הזאת?

                                    חתימה דיגטלית... היא בדיוק כמו של מה שקונים רק שאין גוף חיצוני שמעיד על השייכות בין החתימה לחותם, אלא צריך בעת הצורך לבוא אליך ולבדוק האם היא שלך.

                                    1. איך היא עובדת? האם ע"י מפתח ציבורי ומפתח פרטי כמו באינטרנט?

                                    כן. אבל באינטרנט התוכן עובר הצפנה ע"י המפתח הציבורי, פה המפתח הציבורי מאפשר לכל אחד לבדוק האם אכן מחולל המפתח חתם על המסמך. החתימה היא בעצם תוספת על המסמך, שמחוללת ע"י המפתח הפרטי - אני לא יודע איך בדיוק יוצרים את זה.

                                    1. איך אני יכול ליצור בעצמי כזאת חתימה. מה אני אמור לקבל? קבצים?

                                    אתה יוצר באמצעות תוכנה צמד מפתחות. בד"כ שומרים אותם בקבצים. יש תוכנות שיוצרות קובץ בודד שנקרא p12 בו נמצאים שני המפתחות. בקובץ pem למשל יש רק את הציבורי. כל סוגי הקבצים הללו הם קבצי טקסט פשוט, החתימה מופיעה שם בייצוג של Base64.

                                    ליצירת המפתחות אין כלי מובנה בwindows, יש בגיט-בש כלי שורת פקודה בשם ssh-keygen.exe, כמו"כ יש כלי גרפי בPuTTY וגם בMobaXtrem ובהמון כלים דומים.

                                    מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

                                    בכל נושא אפשר ליצור קשר dovid@tchumim.com

                                    תגובה 1 תגובה אחרונה
                                    3
                                    • מנצפךמ מנותק
                                      מנצפךמ מנותק
                                      מנצפך
                                      כתב ב נערך לאחרונה על ידי
                                      #24

                                      @dovid אם כן כנראה שהבעיה היא בסוג החתימה.
                                      אני קיבלתי מה- openSsl, שני קבצים. אחד ציבורי ואחד פרטי.
                                      ואני מנסה לחתום עם הפרטי.

                                      הכלי הנ"ל מצפה כנראה לקבל קובץ מסוג p12. שבו יש את שני החתימות כפי שכתב @dovid .
                                      (וודאי זה מה שהוא מצפה, לפי השגיאה

                                      Error: p12 certificate expected as Buffer.
                                      

                                      ).

                                      מה שנשאר זה לנסות ליצור קובץ כזה.

                                      תגובה 1 תגובה אחרונה
                                      0
                                      • מנצפךמ מנותק
                                        מנצפךמ מנותק
                                        מנצפך
                                        כתב ב נערך לאחרונה על ידי
                                        #25

                                        @dovid השתמשתי בהוראות כאן:
                                        https://www.ssl.com/how-to/create-a-pfx-p12-certificate-file-using-openssl/

                                        כפי שהסברת, זה מייצר קובץ אחד משני הקבצים, הפרטי והציבורי.

                                        אך עדיין יש לי אותה השגיאה.

                                        תגובה 1 תגובה אחרונה
                                        0

                                        • 1
                                        • 2
                                        בא תתחבר לדף היומי!
                                        • התחברות

                                        • אין לך חשבון עדיין? הרשמה

                                        • התחברו או הירשמו כדי לחפש.
                                        • פוסט ראשון
                                          פוסט אחרון
                                        0
                                        • דף הבית
                                        • קטגוריות
                                        • פוסטים אחרונים
                                        • משתמשים
                                        • חיפוש
                                        • חוקי הפורום