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

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

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

הפורום כעת לקריאה בלבד, לקריאה נוספת.

חתימת מסמך PDF

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

    שאלה נוספת.
    מה זה קובץ pem?
    וכן מה זה p12?
    כי ע"י openSsl יצרתי קובץ key.

    upsilon01U תגובה 1 תגובה אחרונה
    0
    • מנצפךמ מנצפך

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

      אשמח להבין:

      1. איך בדיוק נקראת החתימה הזאת?
      2. איך היא עובדת? האם ע"י מפתח ציבורי ומפתח פרטי כמו באינטרנט?
      3. איך אני יכול ליצור בעצמי כזאת חתימה. מה אני אמור לקבל? קבצים?
      4. אני מתאר לעצמי שאחרי שתהיה לי החתימה, אדע כבר לחתום. אבל אשמח להסבר מי שהתנסה בחתימה בסביבת NodeJS. בדגש על חתימת Buffer של PDF.

      תודה רבה.
      כל התשובות תתקבלנה בברכה.

      yossizY
      yossizY
      yossiz
      כתב ב נערך לאחרונה על ידי
      #5

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

      אני מתאר לעצמי שאחרי שתהיה לי החתימה, אדע כבר לחתום

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

      חיפוש גוגל קצר מניב את התוצאות הבאות -
      http://wiki.cacert.org/PdfSigning
      https://www.npmjs.com/package/node-signpdf
      https://www.npmjs.com/package/node-pdfsigner
      https://nhs.io/pdf/#signing

      📧 יוסי@מייל.קום | 🌎 בלוג | ☕ קפה
      👈 רוצים כתובת מייל בעברית? כנסו למייל.קום 👉

      מנצפךמ תגובה 1 תגובה אחרונה
      0
      • yossizY yossiz

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

        אני מתאר לעצמי שאחרי שתהיה לי החתימה, אדע כבר לחתום

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

        חיפוש גוגל קצר מניב את התוצאות הבאות -
        http://wiki.cacert.org/PdfSigning
        https://www.npmjs.com/package/node-signpdf
        https://www.npmjs.com/package/node-pdfsigner
        https://nhs.io/pdf/#signing

        מנצפךמ
        מנצפךמ
        מנצפך
        כתב ב נערך לאחרונה על ידי
        #6

        @yossiz כמובן שאני שאשתמש באחת הספריות שהבאת. כבר עמדתי לבדוק אחת מהן.
        עיקר שאלתי היא לגבי יצירת המפתח.

        תגובה 1 תגובה אחרונה
        1
        • מנצפךמ מנצפך

          בינתיים התחלתי עם openSsl.
          רשמתי כזאת פקודה:

          sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout test-ssl/private.key -out test-ssl/public.crt
          

          הוא יצר לי שני קבצים.

          אני מבין שאני צריך לתחום עם ה private.key. נכון?

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

          yossizY
          yossizY
          yossiz
          כתב ב נערך לאחרונה על ידי
          #7

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

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

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

          📧 יוסי@מייל.קום | 🌎 בלוג | ☕ קפה
          👈 רוצים כתובת מייל בעברית? כנסו למייל.קום 👉

          תגובה 1 תגובה אחרונה
          0
          • מנצפךמ מנצפך

            שאלה נוספת.
            מה זה קובץ pem?
            וכן מה זה p12?
            כי ע"י openSsl יצרתי קובץ key.

            upsilon01U
            upsilon01U
            upsilon01
            כתב ב נערך לאחרונה על ידי
            #8

            @מנצפך

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

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

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

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

              upsilon01U תגובה 1 תגובה אחרונה
              0
              • מנצפךמ מנצפך

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

                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
                • upsilon01U upsilon01

                  @מנצפך-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);
                  
                  מנצפךמ
                  מנצפךמ
                  מנצפך
                  כתב ב נערך לאחרונה על ידי
                  #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
                              • מנצפךמ מנצפך

                                @upsilon01 הוא כותב לי

                                Error: Could not find ByteRange placeholder: /ByteRange [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
                                  • מנצפךמ מנצפך

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

                                    Error: PDF expected as Buffer
                                    

                                    או

                                    Error: p12 certificate expected as Buffer.
                                    

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

                                    א
                                    א
                                    אהרן
                                    כתב ב נערך לאחרונה על ידי
                                    #20

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

                                    מנצפךמ תגובה 1 תגובה אחרונה
                                    0
                                    • א אהרן

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

                                      מנצפךמ
                                      מנצפךמ
                                      מנצפך
                                      כתב ב נערך לאחרונה על ידי
                                      #21

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

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

                                        נסה 'binary'

                                        תגובה 1 תגובה אחרונה
                                        0
                                        • מנצפךמ מנצפך

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

                                          אשמח להבין:

                                          1. איך בדיוק נקראת החתימה הזאת?
                                          2. איך היא עובדת? האם ע"י מפתח ציבורי ומפתח פרטי כמו באינטרנט?
                                          3. איך אני יכול ליצור בעצמי כזאת חתימה. מה אני אמור לקבל? קבצים?
                                          4. אני מתאר לעצמי שאחרי שתהיה לי החתימה, אדע כבר לחתום. אבל אשמח להסבר מי שהתנסה בחתימה בסביבת NodeJS. בדגש על חתימת Buffer של PDF.

                                          תודה רבה.
                                          כל התשובות תתקבלנה בברכה.

                                          dovidD
                                          dovidD
                                          dovid
                                          ניהול
                                          כתב ב נערך לאחרונה על ידי
                                          #23

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

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

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

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

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

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

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

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

                                          • מנטור אישי בתכנות והמסתעף – להתקדם לשלב הבא!
                                          • בכל נושא אפשר ליצור קשר dovid@tchumim.com
                                          תגובה 1 תגובה אחרונה
                                          3

                                          שלום! נראה שהשיחה הזו מעניינת אותך, אבל עדיין אין לך חשבון.

                                          נמאס לכם לגלול בין אותם הפוסטים בכל ביקור? כשנרשמים לחשבון, תמיד תחזרו בדיוק למקום שבו הייתם קודם, ותוכלו לבחור לקבל התראות על תגובות חדשות (בין אם במייל, ובין אם בהתראת פוש). תוכלו גם לשמור סימניות ולפרגן ב-upvote לפוסטים כדי להביע הערכה לחברי קהילה אחרים.

                                          בעזרת התרומה שלך, הפוסט הזה יכול להיות אפילו טוב יותר 💗

                                          הרשמה התחברות
                                          תגובה
                                          • תגובה כנושא
                                          התחברו כדי לפרסם תגובה
                                          • מהישן לחדש
                                          • מהחדש לישן
                                          • הכי הרבה הצבעות


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

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