مراحل تنظیم Let's Encrypt در IIS
اندازه‌ی قلم متن
تخمین مدت زمان مطالعه‌ی مطلب: هشت دقیقه

روزگاری دریافت مجوزهای SSL، گران و سخت بود. برای رفع این مشکلات مؤسسه‌هایی مانند Let's Encrypt پدیدار شده‌اند که مجوزهای SSL رایگانی را برای سایت‌های اینترنتی صادر می‌کنند. دسترسی به سرویس آن‌ها از طریق API ارائه شده‌ی آن، بسیار ساده بوده، کار با آن رایگان است و نیاز به مجوز خاصی ندارد. فقط باید دقت داشت که گواهینامه‌های Let's Encrypt دو ماهه هستند و وب‌سرور سایت شما باید اجازه‌ی دسترسی به محل ویژه‌ای را که جهت تعیین اعتبار دومین درخواستی ایجاد می‌شود، صادر کند. البته درخواست گواهی مجدد و تمدید آن در هر زمانی، حتی اگر پیش از انقضای آن باشد، مسیر است و از این لحاظ محدودیتی ندارد. در ادامه نحوه‌ی کار با این سرویس را در ویندوزهای سرور بررسی خواهیم کرد.


دریافت برنامه‌ی win-acme

برنامه‌ی win-acme کار دریافت، نصب و تنظیم به روز رسانی خودکار مجوزهای Let’s Encrypt را در ویندوز بسیار ساده کرده‌است و تقریبا به برنامه‌ی استاندارد انجام اینکار تبدیل شده‌است. این برنامه، انجام مراحل زیر را خودکار کرده‌است:
- اسکن IIS برای یافتن bindings و نام سایت‌ها
-  اتصال به Let’s Encrypt certificate authority و دریافت مجوزهای لازم
- درج خودکار مجوزهای دریافتی در Windows certificate store
- ایجاد HTTPS binding خودکار در IIS
- استفاده از Windows Task Scheduler‌، جهت ایجاد وظیفه‌ی به روز رسانی خودکار مجوزهای درخواست شده

به همین جهت پیش از هر کاری نیاز است این برنامه را دریافت کنید:
https://github.com/PKISharp/win-acme/releases

این برنامه از دات نت نگارش 4.6.2 استفاده می‌کند. بنابراین نیاز است این نگارش و یا ترجیحا آخرین نگارش دات نت فریم ورک را بر روی سرور نصب کنید.


آماده سازی برنامه‌ی ASP.NET جهت دریافت مجوزهای Let’s Encrypt

سرور Let’s Encrypt، در حین صدور مجوز برای سایت شما نیاز دارد بررسی کند که آیا شما واقعا صاحب همان دومین هستید یا خیر. به همین جهت مسیر
/.well-known/acme-challenge/id
را بر روی سرور شما بررسی خواهد کرد (بنابراین سرور شما باید به اینترنت متصل بوده و همچنین مجوز دسترسی به این مسیر را عمومی کند). برنامه‌ی win-acme این id را از سرور Let’s Encrypt به صورت خودکار دریافت کرده و فایلی را در مسیر یاد شده ایجاد می‌کند. سپس سرور Let’s Encrypt یکبار این مسیر را خواهد خواند. مشکل اینجا است که دسترسی به این فایل بدون پسوند در برنامه‌های MVC به صورت پیش‌فرض مسیر نیست و نیازی به تنظیمات خاصی دارد:
روش انجام اینکار در ASP.NET Core به صورت زیر است:
[HttpGet("/.well-known/acme-challenge/{id}")]
public IActionResult LetsEncrypt(string id, [FromServices] IHostingEnvironment env)
{
   id = Path.GetFileName(id); // security cleaning
   var file = Path.Combine(env.ContentRootPath, ".well-known", "acme-challenge", id);
   return PhysicalFile(file, "text/plain");
}
این اکشن متد را در هر کنترلری قرار دهید، تفاوتی نمی‌کند و کار خواهد کرد؛ چون attribute routing آن مستقل از محل قرارگیری آن است.
در MVC 5x پارامتر env را حذف و بجای آن از Server.MapPath و در آخر از return File استفاده کنید.
[Route(".well-known/acme-challenge/{id}")]
public ActionResult LetsEncrypt(string id)
{
   id = Path.GetFileName(id); // security cleaning
   var file = Path.Combine(Server.MapPath("~/.well-known/acme-challenge"), id);
   return File(file, "text/plain", id);
}
اگر این مرحله را تنظیم نکنید، در وسط کار دریافت مجوز توسط برنامه‌ی win-acme، به علت اینکه مشخص نیست آیا شما صاحب دامنه هستید یا خیر، خطایی را دریافت کرده و برنامه متوقف می‌شود.


آماده سازی IIS برای دریافت مجوزهای Let’s Encrypt

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


و سپس bindings مناسبی را ایجاد کنید (از نوع HTTP و نه HTTPS):


برای مثال اگر سایت شما قرار است توسط آدرس‌های www.dotnettips.info و dotnettips.info در دسترس باشد، نیاز است دو binding را در اینجا ثبت کنید. برای تمام موارد ثبت شده هم این تنظیمات را مدنظر داشته باشید:
Type:http
Port:80
IP address:All Unassigned
برنامه‌ی win-acme بر اساس این HTTP Bindings است که معادل‌های متناظر HTTPS آن‌ها را به صورت خودکار ثبت و تنظیم می‌کند.


اجرای برنامه‌ی win-acme بر روی ویندوز سرور 2008

IISهای 8 به بعد (و یا ویندوز سرور 2012 به بعد) دارای ویژگی هستند به نام Server Name Indication و یا SNI که اجاز می‌دهند بتوان چندین مجوز SSL را بر روی یک IP تنظیم کرد.


در اینجا به ازای هر Bindings تعریف شده‌ی در قسمت قبل، یک مجوز Let’s Encrypt دریافت خواهد شد. اما چون ویندوز سرور 2008 به همراه IIS 7.5 است، فاقد ویژگی SNI است. به همین جهت در حالت عادی برای مثال فقط برای www.dotnettips.info مجوزی را دریافت می‌کنید و اگر کاربر به آدرس dotnettips.info مراجعه کند، دیگر نمی‌تواند به سایت وارد شود و پیام غیرمعتبر بودن مجوز SSL را مشاهده خواهد کرد.
برنامه‌ی win-acme برای رفع این مشکل، از ویژگی خاصی به نام «SAN certificate» پشتیبانی می‌کند.
به این ترتیب با ویندوز سرور 2008 هم می‌توان دامنه‌ی اصلی و زیر دامنه‌های تعریف شده را نیز پوشش داد و سایت به این ترتیب بدون مشکل کار خواهد کرد. مراحل تنظیم SAN توسط برنامه‌ی win-acme به این صورت است:

ابتدا که برنامه‌ی win-acme را با دسترسی admin اجرا می‌کنید، چنین منویی نمایش داده می‌شود:
 N: Create new certificate
 M: Create new certificate with advanced options
 L: List scheduled renewals
 R: Renew scheduled
 S: Renew specific
 A: Renew *all*
 V: Revoke certificate
 C: Cancel scheduled renewal
 X: Cancel *all* scheduled renewals
 Q: Quit
گزینه‌ی N یا ایجاد مجوز جدید را انتخاب کنید.
سپس منوی بعدی را نمایش می‌دهد:
 [INFO] Running in Simple mode

 1: Single binding of an IIS site
 2: SAN certificate for all bindings of an IIS site
 3: SAN certificate for all bindings of multiple IIS sites
 4: Manually input host names
 C: Cancel
در این حالت برای ویندوز سرور 2008، فقط و فقط گزینه‌ی 2 را انتخاب کنید.
سپس لیست سایت‌های نصب شده‌ی در IIS را نمایش می‌دهد:
 1: Default Web Site
 C: Cancel

 Choose site: 1
در اینجا برای مثال شماره‌ی 1 یا هر شماره‌ی دیگر متناظر با وب سایت مدنظر را انتخاب کنید.
در ادامه منوی زیر را نمایش می‌دهد:
 * www.dotnettips.info
 * dotnettips.info

 Press enter to include all listed hosts, or type a comma-separated lists of exclusions:
لیستی را که در اینجا مشاهده می‌کنید، همان Bindings است که پیشتر ایجاد کردیم. عنوان می‌کند که برای کدامیک از این‌ها نیاز است مجوز دریافت و نصب شود. کلید enter را فشار دهید تا برای تمام آن‌ها اینکار صورت گیرد.
و ... همین! پس از آن کار دریافت، نصب و به روز رسانی Bindings در IIS به صورت خودکار انجام خواهد شد. اکنون اگر به قسمت Binding سایت مراجعه کنید، این تنظیمات خودکار جدید را مشاهده خواهید کرد:


اگر به لاگ نصب مجوزها دقت کنید این دو سطر نیز در انتهای آن ذکر می‌شوند:
 [INFO] Adding renewal for Default Web Site
 [INFO] Next renewal scheduled at 2018/7/21 4:19:20 AM
علت اینجا است که مجوزهای Let’s Encrypt طول عمر کمی دارند و در صورت به روز نشدن مداوم، کاربران دیگر قادر به مرور سایت نخواهند بود. به همین جهت این برنامه یک Scheduled Task ویندوز را نیز جهت به روز رسانی خودکار این مجوزها ایجاد و تنظیم می‌کند.


اجرای برنامه‌ی win-acme بر روی ویندوزهای سرور 2012 به بعد

چون IIS ویندوزهای سرور 2012 به بعد، از نصب و فعالسازی بیش از یک مجوز SSL به ازای یک IP به صورت توکار تحت عنوان ویژگی SNI پشتیبانی می‌کنند، مراحل انجام آن ساده‌تر هستند.
ابتدا که برنامه‌ی win-acme را با دسترسی admin اجرا می‌کنید، چنین منویی نمایش داده می‌شود:
 N: Create new certificate
 M: Create new certificate with advanced options
 L: List scheduled renewals
 R: Renew scheduled
 S: Renew specific
 A: Renew *all*
 V: Revoke certificate
 C: Cancel scheduled renewal
 X: Cancel *all* scheduled renewals
 Q: Quit
گزینه‌ی N یا ایجاد مجوز جدید را انتخاب کنید.
سپس منوی بعدی را نمایش می‌دهد:
 [INFO] Running in Simple mode

 1: Single binding of an IIS site
 2: SAN certificate for all bindings of an IIS site
 3: SAN certificate for all bindings of multiple IIS sites
 4: Manually input host names
 C: Cancel
در این حالت گزینه‌ی 4 را انتخاب کنید (با فرض اینکه از IIS 8.0 به بعد استفاده می‌کنید).
سپس از شما درخواست می‌کند که لیست دامنه و زیر دامنه‌هایی را که قرار است برای آن‌ها مجوز SSL صادر شوند، به صورت لیست جدا شده‌ی توسط کاما، وارد کنید:
 Enter comma-separated list of host names, starting with the primary one: dotnettips.info, www.dotnettips.info
در ادامه لیست وب سایت‌های ثبت شده‌ی در IIS را نمایش می‌دهد:
1: Default Web Site
2: mysiteName
Choose site to create new bindings: 1
در اینجا شماره‌ی سایتی را که می‌خواهید برای آن مجوز صادر شود، انتخاب کنید.
و ... همین! پس از آن مجوزهای SSL درخواستی، دریافت، نصب و تنظیم خواهند شد. همچنین یک Scheduled Task هم برای به روز رسانی خودکار آن تنظیم می‌شود.
  • #
    ‫۶ سال و ۳ ماه قبل، چهارشنبه ۹ خرداد ۱۳۹۷، ساعت ۰۱:۵۳
    بعد از انجام مراحل گفته شده خطای زیر دریافت شد:
    You do not have permission to view this directory or page using the credentials that you supplied
    مشکل میتونه از چی باشه؟
    • #
      ‫۶ سال و ۳ ماه قبل، چهارشنبه ۹ خرداد ۱۳۹۷، ساعت ۰۲:۲۲
      قبل از اجرای برنامه win-acme (با دسترسی admin) این آزمایش را انجام دهید:
      - پوشه‌های تو در توی ذیل را در ریشه‌ی سایت به همراه فایل خالی emptyTextFile در آن ایجاد کنید:
      /.well-known/acme-challenge/emptyTextFile
      یک نکته: در ویندوز پوشه‌ای که با . شروع شود قابل ایجاد نیست؛ مگر اینکه یک . هم در انتهای نام آن قرار دهید که پس از enter، این . آخر حذف می‌شود.
      - سپس مسیر http://mysite.com/.well-known/acme-challenge/emptyTextFile را در مرورگر باز کنید (این دقیقا کاری است که سرور let's encrypt انجام می‌دهد؛ البته فقط نام فایل آن متفاوت است). آیا این فایل خالی بدون پسوند، قابل دریافت و خوانده شدن هست؟
      • #
        ‫۶ سال و ۳ ماه قبل، چهارشنبه ۹ خرداد ۱۳۹۷، ساعت ۰۲:۳۰
        بله
        با آدرس http://mysite.com/.well-known/acme-challenge/emptyTextFile.txt قابل دسترسی است
        • #
          ‫۶ سال و ۳ ماه قبل، چهارشنبه ۹ خرداد ۱۳۹۷، ساعت ۰۳:۱۳
          نه. بدون پسوند امتحان کنید. txt. آخر را حذف کنید.
          • #
            ‫۶ سال و ۳ ماه قبل، چهارشنبه ۹ خرداد ۱۳۹۷، ساعت ۰۵:۲۸
            خیر، بدون پسوند خطای زیر داده می‌شود:
             HTTP Error 404.0 - Not Found 
            • #
              ‫۶ سال و ۳ ماه قبل، چهارشنبه ۹ خرداد ۱۳۹۷، ساعت ۰۵:۴۵
              اگر از MVC استفاده می‌کنید، روش آن‌را در قسمت تعریف مسیریابی مطلب فوق (آماده سازی برنامه‌ی ASP.NET جهت دریافت مجوزهای Let’s Encrypt) توضیح دادم و تست شده. اگر خیر، این تنظیمات را به فایل web.config اضافه کنید:
                  <system.webServer>
                      <staticContent>
                          <clear/>
                          <mimeMap fileExtension = ".*" mimeType="text/json" />
                      </staticContent>
                      <handlers>
                          <clear />
                          <add name="StaticFile" path="*" verb="*" type="" modules="StaticFileModule,DefaultDocumentModule,DirectoryListingModule" scriptProcessor="" resourceType="Either" requireAccess="Read" allowPathInfo="false" preCondition="" responseBufferLimit="4194304" />
                      </handlers>
                  </system.webServer>
  • #
    ‫۶ سال و ۳ ماه قبل، چهارشنبه ۹ خرداد ۱۳۹۷، ساعت ۱۴:۳۸
    با توجه به کد بالا، در MVC 5 و WebAPI 2 خطای زیر نمایش داده می‌شود:
    The route template '/.well-known/acme-challenge/{id}' on the action named 'LetsEncrypt' on the controller named 'Home' cannot begin with a forward slash.
    که با برداشتن علامت / از ابتدای مسیر خطا رفع می‌شود، مانند این کد:
    [Route(".well-known/acme-challenge/{id}")]

  • #
    ‫۶ سال و ۳ ماه قبل، چهارشنبه ۹ خرداد ۱۳۹۷، ساعت ۱۵:۱۷
    چطور می‌تونیم کاری کنیم که اگر کاربر با http به سایت ما وارد شد آدرس رو به Https تغییر بدیم؟
  • #
    ‫۶ سال و ۳ ماه قبل، سه‌شنبه ۲۲ خرداد ۱۳۹۷، ساعت ۱۵:۵۶
    روش دیگری برای آماده سازی دریافت فایل‌های بدون پسوند Let's encrypt
    <?xml version="1.0" encoding="UTF-8"?> 
    <configuration> 
        <system.webServer> 
            <rewrite> 
                <rules> 
                    <rule name="LetsEncrypt" stopProcessing="true"> 
                        <match url=".well-known/acme-challenge/*" /> 
                        <conditions logicalGrouping="MatchAll" trackAllCaptures="false" /> 
                        <action type="None" /> 
                    </rule> 
                </rules> 
            </rewrite> 
        </system.webServer> 
    </configuration>
  • #
    ‫۶ سال و ۳ ماه قبل، جمعه ۱ تیر ۱۳۹۷، ساعت ۱۵:۲۶
    از چند وقت گذشته در بعضی اوقات برای لود سایت، باید چند بار سعی کرد و کندی محسوسی هم مشاهده می‌شود، در صورتی که قبلاً یک چنین مشکلی وجود نداشت. نمی‌دانم دیگر دوستان هم با چنین حالتی برخود داشته‌اند؟
  • #
    ‫۶ سال و ۲ ماه قبل، جمعه ۸ تیر ۱۳۹۷، ساعت ۲۲:۰۳
    امکان استفاده از Let's Encrypt در هاست‌های اشتراکی ویندوزی وجود داره؟
  • #
    ‫۵ سال و ۳ ماه قبل، جمعه ۲۴ خرداد ۱۳۹۸، ساعت ۰۰:۵۶
    سلام؛ من تمام این کارها رو انجام دادم و نصب به طور درست و کامل انجام شده ولی وقتی دامنه‌ام رو با https میزنم، سایت رو نمیاره. مشکل چی هست؟ پورت 443 رو در فایروال هم باز کردم ولی اتفاقی نیفتاد. لطفا راهنمایی بفرمایید. در ضمن سایت رو یک صفحه html  ساده در نظر بگیرید. هیچ برنامه نویسی انجام نشده.
    • #
      ‫۵ سال و ۳ ماه قبل، جمعه ۲۴ خرداد ۱۳۹۸، ساعت ۰۱:۱۴
      - آیا مراحل آزمایش دسترسی به مثال emptyTextFile را که در نظرات فوق بررسی شد، انجام دادید؟
      - دقیقا چه خطایی دریافت کردید؟ دقیقا مرورگر چه چیزی را نمایش می‌دهد؟ خصوصا جزئیات برگه‌ی network قسمت developer tools آن.
      - در event viewer ویندوز خطایی ثبت شده؟
      - جزئیات تصویر «قسمت Binding سایت » را در مطلب فوق بررسی کردید؟ وجود دارد؟ درست تنظیم شده؟
      - دستور netstat -o -n -a | findstr 0.0:443 را اجرا کنید تا مشخص شود چه برنامه‌ای از پورت 443 استفاده می‌کند. شاید برنامه‌ی دیگری آن‌را اشغال کرده‌است. یک pid را مشخص می‌کند که در task manager قابل یافتن است.
      • #
        ‫۵ سال و ۳ ماه قبل، جمعه ۲۴ خرداد ۱۳۹۸، ساعت ۰۱:۴۶
        تشکر؛ بله اون بحث دسترسی emptyTextFile اوکی هست. انجام دادم.
        هیچ خطایی در مسیر نصب و انجام کارها نداشتم.
        در برگه network هم چیزی دستگیرم نشد. خودتون هم میتونید بررسی کنید.
        در بخش binding  همه چیز درست هست همونطور که شما توی تصاویرتون هست و سرچ‌های دیگه که زدم همینجوری هست تنظیمات و نکته ای نداره.
        دستوری که فرمودید زدم و خروجی این شد . pid نداد
        C:\Users\Administrator>netstat -o -n -a | findstr 0.0:443
          TCP    0.0.0.0:443            0.0.0.0:0              LISTENING       4
        • #
          ‫۵ سال و ۳ ماه قبل، جمعه ۲۴ خرداد ۱۳۹۸، ساعت ۰۲:۳۳
          - دستور netstat -ab را هم آزمایش کنید. نام برنامه‌ی استفاده کننده را هم مشخص می‌کند.
          + پورت 443 روی سرور شما قابل دسترسی نیست. برای آزمایش آن از راه دور دستور telnet yoursite.com 443 را صادر کنید. پس از آن دو حالت ممکن است رخ دهند:
          الف) پیام «connection refused» را دریافت می‌کنید. یعنی یا این پورت بسته‌است و یا هیچ برنامه‌ای بر روی سرور شما در حال گوش فرا دادن به آن نیست.
          ب) پس از اجرای دستور فوق، بلافاصله یک صفحه‌ی سیاه رنگ ظاهر می‌شود. این مورد یعنی اتصال برقرار شده و پورت 443 قابل دسترسی است.
          • #
            ‫۵ سال و ۳ ماه قبل، جمعه ۲۴ خرداد ۱۳۹۸، ساعت ۱۹:۲۰
            ممنون، پاسخ شما درست بود. telnet  زدم و متوجه شدم پورت سرور بسته است.
  • #
    ‫۴ سال و ۱۱ ماه قبل، شنبه ۲۰ مهر ۱۳۹۸، ساعت ۱۱:۵۴
    با سلام؛ من دنبال این هستم که https را روی لوکال هاست بصورت تستی از منوی Create a Self Signed Certificate  نصب و تست کنم؛ ولی همیشه خطای اینکه valid نیست رو به من میده. آیا راهی هست من روی لوکال هست خودم https://localhost را تست کنم؟
  • #
    ‫۴ سال و ۷ ماه قبل، شنبه ۱۲ بهمن ۱۳۹۸، ساعت ۱۳:۲۷

    یک نکته‌ی تکمیلی

    ACME V1 تا چند ماه دیگر به پایان خواهد رسید:
    In June of 2020 we will stop allowing new domains to validate via ACMEv1.
    در این حالت برای ارتقاء به نگارش 2 آن، تنها کافی است نگارش جدید win-acme را دریافت و اجرا کنید (که برای اجرا نیاز به نصب NET Core 3.1. را دارد). همچنین scheduled task قدیمی را هم که در سیستم برای نگارش 1 داشتید، disable کنید.
    یک نمونه لاگ اجرای نگارش جدید آن به صورت زیر است:
     A simple Windows ACMEv2 client (WACS)
     Software version 2.1.3.671 (RELEASE, PLUGGABLE)
     IIS version 7.5
     Running with administrator credentials
     Scheduled task not configured yet
     Please report issues at https://github.com/PKISharp/win-acme
    
     N: Create new certificate (simple for IIS)
     M: Create new certificate (full options)
     L: List scheduled renewals
     R: Renew scheduled
     S: Renew specific
     A: Renew *all*
     O: More options...
     Q: Quit
    
     Please choose from the menu: m
    
     Running in mode: Interactive, Advanced
    
      Please specify how the list of domain names that will be included in the
      certificate should be determined. If you choose for one of the "all bindings"
      options, the list will automatically be updated for future renewals to
      reflect the bindings at that time.
    
     1: IIS
     2: Manual input
     3: CSR created by another program
     C: Abort
    
     How shall we determine the domain(s) to include in the certificate?: 1
    
      Please select which website(s) should be scanned for host names. You may
      input one or more site identifiers (comma separated) to filter by those
      sites, or alternatively leave the input empty to scan *all* websites.
    
     1: Default Web Site (2 bindings)
    
     Site identifier(s) or <ENTER> to choose all: 1
    
     1: dotnettips.info (Site 1)
     2: www.dotnettips.info (Site 1)
    
      You may either choose to include all listed bindings as host names in your
      certificate, or apply an additional filter. Different types of filters are
      available.
    
     1: Pick specific bindings from the list
     2: Pick bindings based on a search pattern
     3: Pick bindings based on a regular expression
     4: Pick *all* bindings
    
     How do you want to pick the bindings?: 4
    
     1: dotnettips.info (Site 1)
     2: www.dotnettips.info (Site 1)
    
      Please pick the most important host name from the list. This will be
      displayed to your users as the subject of the certificate.
    
     Common name: 2
    
     1: dotnettips.info (Site 1)
     2: www.dotnettips.info (Site 1)
    
     Continue with this selection? (y*/n)  - yes
    
     Target generated using plugin IIS: www.dotnettips.info and 1 alternatives
    
     Suggested friendly name '[IIS] Default Web Site, (any host)', press <ENTER> to
    accept or type an alternative: <Enter>
    
      The ACME server will need to verify that you are the owner of the domain
      names that you are requesting the certificate for. This happens both during
      initial setup *and* for every future renewal. There are two main methods of
      doing so: answering specific http requests (http-01) or create specific dns
      records (dns-01). For wildcard domains the latter is the only option. Various
      additional plugins are available from https://github.com/PKISharp/win-acme/.
    
     1: [http-01] Save verification files on (network) path
     2: [http-01] Serve verification files from memory (recommended)
     3: [http-01] Upload verification files via FTP(S)
     4: [http-01] Upload verification files via SSH-FTP
     5: [http-01] Upload verification files via WebDav
     6: [dns-01] Create verification records manually (auto-renew not possible)
     7: [dns-01] Create verification records with acme-dns (https://github.com/joohoi/acme-dns)
     8: [dns-01] Create verification records with your own script
     9: [tls-alpn-01] Answer TLS verification request from win-acme
     C: Abort
    
     How would you like prove ownership for the domain(s) in the certificate?: 2
    
      After ownership of the domain(s) has been proven, we will create a
      Certificate Signing Request (CSR) to obtain the actual certificate. The CSR
      determines properties of the certificate like which (type of) key to use. If
      you are not sure what to pick here, RSA is the safe default.
    
     1: Elliptic Curve key
     2: RSA key
    
     What kind of private key should be used for the certificate?: 2
    
      When we have the certificate, you can store in one or more ways to make it
      accessible to your applications. The Windows Certificate Store is the default
      location for IIS (unless you are managing a cluster of them).
    
     1: IIS Central Certificate Store (.pfx per domain)
     2: PEM encoded files (Apache, nginx, etc.)
     3: Windows Certificate Store
     C: Abort
    
     How would you like to store the certificate?: 3
    
     1: IIS Central Certificate Store (.pfx per domain)
     2: PEM encoded files (Apache, nginx, etc.)
     3: No additional storage steps required
     C: Abort
    
     Would you like to store it in another way too?: 3
    
      With the certificate saved to the store(s) of your choice, you may choose one
      or more steps to update your applications, e.g. to configure the new
      thumbprint, or to update bindings.
    
     1: Create or update https bindings in IIS
     2: Create or update ftps bindings in IIS
     3: Start external script or program
     4: Do not run any (extra) installation steps
    
     Which installation step should run first?: 1
    
     Use different site for installation? (y/n*)  - no
    
     1: Create or update ftps bindings in IIS
     2: Start external script or program
     3: Do not run any (extra) installation steps
    
     Add another installation step?: 3
    
     Enter email(s) for notifications about problems and abuse (comma seperated): name@site.com
    
     Terms of service:   C:\ProgramData\win-acme\acme-v02.api.letsencrypt.org\LE-SA-v1.2-November-15-2017.pdf
    
     Open in default application? (y/n*)  - no
    
     Do you agree with the terms? (y*/n)  - yes
    
     Authorize identifier: dotnettips.info
     Authorizing dotnettips.info using http-01 validation (SelfHosting)
     Authorization result: valid
     Authorize identifier: www.dotnettips.info
     Authorizing www.dotnettips.info using http-01 validation (SelfHosting)
     Authorization result: valid
     Requesting certificate [IIS] Default Web Site, (any host)
     Store with CertificateStore...
     Installing certificate in the certificate store
     Adding certificate [IIS] Default Web Site, (any host) @ 2020/2/1 9:43:55 to store My
     Installing with IIS...
     Updating existing https binding www.dotnettips.info:443 (flags: 0)
     Updating existing https binding dotnettips.info:443 (flags: 0)
     Committing 2 https binding changes to IIS
     Adding Task Scheduler entry with the following settings
     - Name win-acme renew (acme-v02.api.letsencrypt.org)
     - Path C:\Programs\win-acme.v2.1.3.671.x64.pluggable
     - Command wacs.exe --renew --baseuri "https://acme-v02.api.letsencrypt.org/"
     - Start at 09:00:00
     - Time limit 02:00:00
    
     Do you want to specify the user the task will run as? (y/n*)  - no
  • #
    ‫۴ سال و ۳ ماه قبل، دوشنبه ۲۹ اردیبهشت ۱۳۹۹، ساعت ۲۰:۵۸
    برای subdomain هم باید از همین روش استفاده کنیم؟ من api دارم که میخوام توی SSL باشه
    • #
      ‫۴ سال و ۳ ماه قبل، دوشنبه ۲۹ اردیبهشت ۱۳۹۹، ساعت ۲۳:۴۹
      www یک ساب دومین است.
      • #
        ‫۴ سال و ۳ ماه قبل، سه‌شنبه ۳۰ اردیبهشت ۱۳۹۹، ساعت ۰۰:۲۵
        سپاس از راهنمایی درست شد
        یه سوال دیگه ایا بدون داشتن domain و داشتن IP Valid هم میشه این ssl رو دریافت کرد؟
        • #
          ‫۴ سال و ۳ ماه قبل، سه‌شنبه ۳۰ اردیبهشت ۱۳۹۹، ساعت ۰۰:۵۲
          خیر.
  • #
    ‫۴ سال و ۳ ماه قبل، شنبه ۱۷ خرداد ۱۳۹۹، ساعت ۲۱:۱۵
    سلام؛ برای پروژه ASP.NET Core اگه بخوایم از هاست‌های اشتراکی Plesk استفاده کنیم نیازی هست که کار خاصی برای بحث گواهینامه انجام بدیم (چون در مرحله پیاده سازی فرموده بودین [سپس مجوز SSL آن‌را تبدیل به مجوز امن و قابل اطمینان کنید ])؟
    من قبلا برای پروژه ام وی سی از lets encrypt یا گواهینامه‌های دیگه که با هزینه بودن استفاده کردم، فقط کافیه تو هاست در بخش مربوطه درخواست بزنی یا برای اونایی که هزینه دارن خود شرکت تنظیمات رو برات انجام میده.
     تا حالا درگیر تنظیمات IIS نشدم چون اصلا دسترسی بهت نمیدن.
  • #
    ‫۴ سال و ۲ ماه قبل، سه‌شنبه ۱۰ تیر ۱۳۹۹، ساعت ۰۳:۱۲
    این مشکل رو وقتی که سایت با https بالا میاد رو چطور میشه حل کرد؟

    سرور 2016 هست و سایت هم با net core 2.2 نوشته شده، ssl هم توسط  همین آموزش ایجاد شده و به آدرس گفته شده هم دسترسی هستش

    • #
      ‫۴ سال و ۲ ماه قبل، سه‌شنبه ۱۰ تیر ۱۳۹۹، ساعت ۰۳:۱۹
      - در اولین تصویر این مطلب، بررسی کنید چه نوع HTTPS binding ای تعریف شده و جزئیات آن چیست؟
      + این تنظیم را شاید تغییر دادید (همان حالت ignore درست هست):

      website -> SSL Settings -> Client Certificates -> Select `Ignore`:  This is the default option.