ssl בשרת FTP
-
אני מיישם שרת FTP מהקוד כאן:
https://www.codeproject.com/Articles/380769/Creating-an-FTP-Server-in-Csharp-with-IPv6-Supportאני משתמש בקליינט FileZila.
בלי SSL הוא עובד טוב.אבל כשאני רוצה להפעיל אותו עם SSL (בעצם זו הגדרה בקליינט שיתחבר עם SSL), יש לי בעיה עם התעודה.
אני מנסה לטעון בשרת את התעודה מסוג X509Certificate (ניסיתי גם X509Certificate2).
והוא זורק לי שגיאה בשלב הזה. כלומר אין קשר לקליינט, אלא ברגע שהשרת מנסה לטעון את התעודה, הוא כבר נופל.כנראה הבעיה היתה ביצירת התעודה.
איך יצרתי את התעודה?
לפי ההוראות בקישור למעלה:makecert -r -pe -n "CN=localhost" -ss my -sr localmachine -sky exchange -sp "Microsoft RSA SChannel Cryptographic Provider" -sy 12 server.cer
(צריך להפעיל את ה- makecert כמנהל בשביל ליצור את התעודה. ואולי גם את השרת).
התעודה נוצרת בהצלחה.והשרת נופל בשורה
_cert = new X509Certificate("server.cer");
עם שגיאה:
System.Security.Cryptography.CryptographicException: 'Unspecified error'
ניסיתי גם לשנות ל- X509Certificate2:
_cert = new X509Certificate2("server.cer");
ויש את אותה השגיאה.
אני מקווה שהבהרתי את הבעיה כמו שצריך.
אם חסר פרט אוסיף. -
הייתי מתמצת את הבעיה ככה:
_cert = new X509Certificate("server.cer");
מביא שגיאה
System.Security.Cryptography.CryptographicException: 'Unspecified error'כשהקובץ server.cer נוצר בהצלחה ע"י
makecert -r -pe -n "CN=localhost" -ss my -sr localmachine -sky exchange -sp "Microsoft RSA SChannel Cryptographic Provider" -sy 12 server.cer
אני מעריך (וגם ראיתי באינטרנט תשובות דומות) שהבעיה היא בגישה לקובץ, כלומר גם שורת קריאת הקובץ כטקסט תיכשל:
File.ReadAllText("server.cer");
אם זה אתר זה מאוד נפוץ שזה רץ כמשתמש שונה ואין לו הרשאת גישה. תוכל לשנות את ההרשאות של הקובץ לeveryone כדי לפתור/לוודא אם זה הבעיה.
אם זה תוכנה שמורצת ע"י לחיצה כפולה, יש להפעילה כמנהל.
אם זה לא עוזר תצטרך לבדוק אם יש גישה לקובץ ומה פרטי השגיאה אם לא. -
תודה ל @dovid ול @clickone
אני אכן צריך שליטה מלאה על הלוגין. השרת אמור לשלוח את פרטי הכניסה לשרת אחר ורק לפי התשובה שלו להחזיר תשובה לFTP קליינט.
ובשביל זה אני צריך את המימוש בעצמי.בנוסף, אני רוצה שליטה טובה יותר על הרשאות מחיקה וגישה.
תחשוב על אפשרות (עדיין לא בדקתי) של קובץ, שאינו מופיע בפירוט התיקיה, אבל הקליינט יוכל להוריד אותו בכל אופן, אם הוא יודע את השם הספציפי שלו.בקיצור, צריך שליטה מלאה.
לגבי מה ש @dovid הציע שיש בעייה בהרשאות הגישה, גם כשהפעלתי את השרת FTP כמנהל, הוא זרק אותה השגיאה.