محمد نصیری
بنیانگذار انجمن تخصصی فناوری اطلاعات ایران ، هکر کلاه خاکستری ، کارشناس امنیت اطلاعات و ارتباطات

آموزش Renew کردن Certificate اکسچنج سرور به زبان بسیار ساده

چند روز پیش در یکی از سازمان ها مشکلی در خصوص Certificate ایمیل سرور سازمانی که Exchange Server بود به وجود آمد. مشکل به این شکل بود که در هنگام Login به Webmail به کاربران پیغامی مبنی بر Revoke شدن یا Expire شدن Certificate سرور مورد نظر نمایش داده می شد. اما مشکل از کجا بود ؟ دقت کنید که زمانیکه شما در سازمان یک Exchange Server راه اندازی می کنید این سرور بعد از نصب برای خودش یک Certificate ایجاد می کند که به Self-Signed معروف است .

دوره های شبکه، برنامه نویسی، مجازی سازی، امنیت، نفوذ و ... با برترین های ایران

مدت زمان اعتبار این Certificate بصورت پیشفرض 5 سال است و در بیشتر موارد در زمان استفاده کسی به این تاریخ فکر نمی کند ، مشکل سازمان در این بود که دقیقا مدت زمان 5 ساله ای که این Certificate برای رمزنگاری و استفاده در TLS سازمانی معتبر بود تمام شده بود و تنها راهکار این بود که مجددا یک Certificate برای این سرور ایجاد شود ، اما کار به همین سادگی ها هم نبود .

اگر شما در ساختار سازمانی فقط یکی از Role های Exchange سرور را داشته باشید کار تقریبا ساده است و صرفا توسط همین آموزش کار انجام می شود ، اما در این سازمان سه سرور مختلف با Role های مختلف وجود داشت ، یکی به عنوان Hub Transport یکی به عنوان Client Access و یکی دیگر به عنوان Edge Transport در شبکه فعالیت می کردند که کمی کار را پیچیده کرده بود.

در چنین حالتی شما باید برای هر سه سرور اینکار را انجام دهید و مجددا هر سه سرور را به همدیگر بشناسانید ، سرویس های IIS و SMTP ای که بر روی این سرورها کار می کنند وابسته به همین Certificate هستند ، اما چگونه ما می توانیم یک Certificate منقضی شده را از روی یک سرور Exchange حذف کنیم و یک Certificate جدید ایجاد کنیم ؟

سناریو به این شکل است که ابتدا باید وضعیت Certificate های مورد استفاده در Exchange Server خود را بررسی کنید که کدامیک کار می کند و کدامیک مشکل ساز شده است ، برای اینکار فقط شما می توانید از Exchange Management Shell یا همان PowerShell استفاده کنید و راهکار گرافیکی برای انجام اینکار وجود ندارد. بعد از اینکه وارد Exchange Management Shell شدید باید دستور زیر را وارد کنید :

Get-ExchangeCertificate |FL *

با استفاده از دستور بالا کلیه اطلاعات در خصوص Certificate های مورد استفاده در Exchange Server به شما نمایش داده می شود. ممکن است با وارد کردن دستور بالا چندین Certificate مشاهده کنید که مشکلی نیست فقط توجه کنید به Certificate ها و به دنبال Certificate ای بگردید که جلوی آن کلمه ای به شکل expired یا invalid نوشته شده باشد ، این همان Certificate مشکل ساز است .

یک Certificate منقضی یا Expire شده می تواند مشکلات متعددی را برای کلاینت ها و سرورها ایجاد کند از جمله آنها می توان به مشکل اتصال یه سرویس Outlook Web Access و SMTP Transport را اشاره کرد ، یا حداقل پیغام های خطای متنوعی در خصوص Certificate Security دریافت خواهید کرد. خوب تا اینجا متوجه شدید که Certificate مشکل ساز کدام است ، دقت کنید که مهمترین شناسه Certificate در چنین مواقعی فقط و فقط Thumbprint است نه چیز دیگر ، حالا که Thumbprint مربوط به Certificate مورد نظر را پیدا کردید می توانید از طریق مراحل زیر یک Certificate جدید ایجاد کنید و سرویس IIS را نیز مجبور به استفاده از آن کنید :


1-دستور زیر را وارد کنید :

Get-ExchangeCertificate –Thumbprint “9E6DD4B4EA2865CA9E6C34B42329A9AC994EBF63” | New-ExchangeCertificate

دستور بالا بعد از وارد کردن کلید Enter از شما می پرسد که آیا می خواهید این Certificate جدید که ایجاد شده است جایگزین Certificate ای شود که شما با استفاده از Thumbprint مشخص کرده اید یا خیر ؟ توجه کنید که Certificate جدید نیز همانند قبلی برای استفاده توسط سرویس SMTP استفاده خواهد شد ، کافیست حرف y به معنای تایید را وارد کنید.

2- اگر دستور مرحله اول را وارد کرده باشید متوجه می شوید که Certificate ای که جدیدا ایجاد شده است هنوز برای امن کردن سرویس IIS استفاده نمی شود. حالا Thumbprint مربوط به Certificate جدید را کپی کنید و در دستور پایین بعد از Thubmprint آنچه کپی کرده اید را در بین علامت های “” قراردهید :

Enable-ExchangeCertificate – Thumbprint “7A843B04EA2865CA9E6C34B42329AEE4456F9013” –Services IIS

3- بعد از اینکه فرآیند Renew کردن و Enable کردن Certificate را انجام دادید مطمئن شوید که تمامی سرویس ها به درستی کار می کنند و مخصوصا کلاینت های Outlook به درستی به سرور متصل می شوند ، Outlook را ببندید و باز کنید تا مطمئن شوید که همه چیز به درستی کار می کند و خطایی بابت Certificate ها دریافت نمی کنید.

4- در نهایت شما بایستی Certificate قدیمی Expire شده را حذف کنید که این را هم می توانید با دستور زیر انجام دهید :

Remove-ExchangeCertificate –Thumbprint “9E6DD4B4EA2865CA9E6C34B42329A9AC994EBF63″

تا اینجای کار اگر شما فقط و فقط یک Exchange Server داشته باشید و Edge Server در مجموعه نداشته باشید مشکلی پیش نخواهد آمد اما اگر در مجموعه کاری خود Edge سرور هم دارید ایمیل های شما برای دریافت و ارسال دچار اختلال می شوند و یک سری کارهای دیگر را نیز باید روی Edge سرور انجام دهید ، در ادامه شما باید در Edge Server خود نیز عین مراحل بالا را انجام دهید و یک Certificate جدید برای IIS این سرور ایجاد کرده و Certificate قدیمی را حذف کنید اما کمی تفاوت در میان است ، بعد از اینکه دستورات بالا را به درستی وارد کردید Exchange سرور به شما یک هشدار یا Warning به شکل زیر نمایش می دهد :

WARNING: The internal transport certificate attribute for the local Edge Transport
 server has been updated. If this Edge Transport server is subscribed,  you must 
subscribe it again by using the New-EdgeSubscription cmdlet in the Exchange 
Management Shell, and then restart the Microsoft Exchange ADAM service.

هشدار بالا به این معناست که شما مجددا بایستی تنظیمات مربوط به EdgeSubscription را از Edge سرور خود Export بگیرید و آنها را روی سرور Hub Transport خود Import کنید تا همه چیز به حالت اول برگردد ، در واقع با توجه به اینکه Edge Transport در محیط Workgroup قرار دارد دسترسی برای پیکربندی مجدد Certificate و Connection خود با Exchange سرور داخلی یا همان Hub Transport ندارد و شما باید تنظیمات را بصورت دستی خروجی گرفته و بصورت دستی روی Hub Transport شبکه داخلی خود Import کنید. شما می توانید با استفاده از دستور زیر داده های Edge Subscription را از Edge Transport در قالب یک فایل XML خروجی بگیرید :

New-EdgeSubscription -filename "itpro-edge-subscription.xml"

دستور بالا اینقدر هوشمند است که بداند چه تنظیماتی باید خروجی گرفته شوند تا بتوانیم از آنها در Hub Transport برای پیکربندی مجدد استفاده کنیم ، فایل خروجی بدست آمده را در سرور Hub Transport خود که عضو اکتیودایرکتوری هم هست کپی کنید و وارد Shell شوید و دستور زیر را برای Import کردن اطلاعات Edge Transport در Hub Transport اجرا کنید :

New-EdgeSubscription -filename "itpro-edge-subscription.xml" -site "your-site-name"

در دستور بالا توجه کنید که در قسمت your site name حتما نام دقیق site ای که در اکتیودایرکتوری تعریف شده است را قرار دهید ، Exchange سرور بسیار به این اسم site حساس است ، معمولا بصورت پیشفرض اگر تغییر خاصی در اسم site ایجاد نکرده باشید این سایت به اسم Default-First-Site-Name وجود دارد.

اما اگر به هر حال در این خصوص شک دارید کافیست وارد سرور Hub Transport خود شوید و وارد کنسول مدیریتی Exchange Server شوید و از قسمت Hub Transport بر روی Edge Subscription کلیک نید و نام site را می توانید مشاهده کنید. در این حالت همه چیز درست است ، شما کافیست یکبار بر روی سرور Edge Transport سرویس Microsoft Exchange ADAM را Restart کنید تا همه چیز به امید خدا درست شود ، دقت کنید که پیشنهاد می کنم سرورهای موجود Exchange را یکبار Restart کنید تا همه ارتباطات یکبار Renew شوند. امیدوارم که این مشکل برای شما هرگز پیش نیاید یا اگر پیش آمد این مقاله به شما بتواند کمک کند. ITPRO باشید


نویسنده : محمد نصیری

منبع : جزیره مایکروسافت وب سایت توسینسو

هرگونه نشر و کپی برداری بدون ذکر منبع و نام نویسنده دارای اشکال اخلاقی می باشد


محمد نصیری
محمد نصیری

بنیانگذار انجمن تخصصی فناوری اطلاعات ایران ، هکر کلاه خاکستری ، کارشناس امنیت اطلاعات و ارتباطات

محمد نصیری هستم ، هکر قانونمند و کارشناس امنیت سایبری ، سابقه همکاری با بیش از 50 سازمان دولتی ، خصوصی ، نظامی و انتظامی در قالب مشاور ، مدرس و مدیر پروژه ، مدرس دوره های تخصص شبکه ، امنیت ، هک و نفوذ ، در حال حاضر در ایران دیگه رسما فعالیتی غیر از مشاوره انجام نمیدم و مقیم کشور ترکیه هستم ، عاشق آموزش و تدریس هستم و به همین دلیل دوره های آموزشی که ضبط می کنم در دنیا بی نظیر هستند.

نظرات