zoukankan      html  css  js  c++  java
  • apache win openssl

     
    APR22010

    Setting up Apache HTTPS/SSL on Windows

    I am assuming that you already have Apache2 installed and working on a Windows server.

    For SSL/HTTPS to work you need to download and setup the Win32 Binary including OpenSSL "httpd/apache_x.x.x-win32-x86-openssl-x.x.x.msi" on your Windows server.

    If you now have regular HTTP server working follow the guide below to setup HTTPS.

    Setting up HTTPS on a Windows Server:

     

    • Creating a self-signed SSL Certificate using OpenSSL:

      Open the command prompt and cd to your Apache installations "bin" directory. Usually it would be:

      cd "C:Program FilesApache Software FoundationApache2.2in"

      To create the SSL certificate we will need the openssl.cnf files location but the default location set by OpenSSL for this file is setup according to a Linux distribution, so we need to fix it for Windows.

      We need to setup the Windows environment variable OPENSSL_CONF to point to the openssl.cnf files location. It is usually located in "C:Program FilesApache Software FoundationApache2.2confopenssl.cnf" directory.

      So we can set it up by the following command or through the GUI interface:

      set OPENSSL_CONF=C:Program FilesApache Software FoundationApache2.2confopenssl.cnf

      All files generated from the following commands will reside in "C:Program FilesApache Software FoundationApache2.2in" folder.

      Now that we have the environment variable set we need to create a new OpenSSL certificate request using the following command:

      openssl req -new -out server.csr

      It will ask you some questions and you can safely ignore them and just answer the following questions: 
      PEM pass phrase: Password associated with the private key you’regenerating (anything of your choice).  
      Common Name: The fully-qualified domain name associated with this certificate (i.e. www.your-domain.com).

      Now we need to remove the passphrase from the private key. The file"server.key" created from the following command should be only readable by the apache server and the administrator. You should also delete the .rnd file because it contains the entropy information for creating the key and could be used for cryptographic attacks against your private key.

      openssl rsa -in privkey.pem -out server.key

      Now we need to set up an expiry date, it could be any time of your choice, we use 365 days below:

      openssl x509 -in server.csr -out server.cert -req -signkey server.key -days 365

      We have the Self-signed SSL certificates ready now. Now We need to MOVE the "server.cert" and "server.key" file to the

      "C:Program FilesApache Software FoundationApache2.2conf" location.

    • Configuring Apache to run SSL/HTTPS server:

      Now that we have the Self-signed SSL certificate ready, all we need is to configure Apache to start the SSL server.

      First we modify the "C:Program FilesApache Software FoundationApache2.2confhttpd.conf" file.

      Open up confhttpd.conf in a text editor and look for the line:

      LoadModule ssl_module modules/mod_ssl.so and remove any pound sign (#) characters preceding it.

      Include conf/extra/httpd-ssl.conf and remove any pound sign (#) characters preceding it.

      Now we need to modify the "C:Program FilesApache Software FoundationApache2.2confextrahttpd-ssl.conf". Let all the default options as it is but make sure to modify the following section according to your need:

      <VirtualHost _default_:443> 
          ServerAdmin some@email.com 
          DocumentRoot "Your Root folder location" 
          ServerName www.domain.com:443 
          ServerAlias domain.com:443 
          ErrorLog "logs/anyFile-error.log" 
          CustomLog "logs/anyFile-access.log" common 
          SSLEngine on

          SSLCertificateFile "C:/Program Files/Apache Software Foundation/Apache2.2/conf/server.cert"

          SSLCertificateKeyFile "C:/Program Files/Apache Software Foundation/Apache2.2/conf/server.key" 
      </VirtualHost>

      Make sure that "SSLCertificateFile" and "SSLCertificateKeyFile" are properly located.

      For better organizing you can also put the whole <VirtualHost></VirtualHost> section in the "C:Program FilesApache Software FoundationApache2.2confextrahttpd-vhosts.conf" along with your other Virtual Host settings there but you need to uncomment “Include conf/extra/httpd-vhosts.conf” in your confhttpd.conf file to use that.

    • Opening SSL/HTTPS port on Windows:

      Now we need to open an exception in Windows Firewall for TCP port 443. You can do that by going to “Windows Firewall” settings in Control Panel and adding a port in the exception section.

    Well that was long and painful but but now Restart the server and everything should work fine.

    Please feel free to leave comments if this guide helped.

    Create Self-Signed CertificateC


    Related posts:



     
     
     
     

    23 Responses to “Setting up Apache HTTPS/SSL on Windows”

     
    •  
      Firdi Says: 

      hi,

      please change:

      openssl x509 -in server.csr -out server.crt -req -signkey server.key -days 365

      instead

      openssl x509 -in server.csr -out server.cert -req -signkey server.key -days 365

       
    •  
      Preston Says: 

      Really good guide. Thank you very much for posting this.

       
    •  
      ofem Says: 

      where are the files located after this guide ? can’t find them.

       
    •  
      jack Says: 

      Today I have downloadedhttp://www.fightrice.com/mirrors/apache//httpd/binaries/win32/httpd-2.2.19-win32-x86-openssl-0.9.8r.msi file on Windows 2008 RC2 64-bit. Installed the file and Apache default web page on http is working fine.

      Configuring all this settings and starting Apache Windows service and I get error: “Windows could not start the Apache2.2 on Local Computer. For more information, review the System Event Log. If this is a non-Microsoft service, contact the service vendor, and refer to service-specific error code 1.”

      I have looked into System Event Log and there is message: “The Apache2.2 service terminated with service-specific error Incorrect function.”

      I have looked at Apache log folder and there are no files in this folder (I have deleted all files from this log folder before starting Apache).

      Any idea what could be wrong?

       
    •  
      Olivier Says: 

      Great tutorial. But I had to replace :

      SSLCertificateFile “F:/Bin/Apache Software Foundation/Apache2.2/conf/server.crt”

      by :

      SSLCertificateFile “F:/Bin/Apache Software Foundation/Apache2.2/conf/server.cert”

      (.cert instead of .crt) in httpd-ssl.conf to make it work.

       
    •  
      Eugen Says: 

      Many Thanks,
      Your doku is very precise.
      Only one detail:
      In conf/extra/httpd-ssl.conf we have SSLMutex to sat to default like beneath.

      SSLMutex default

       
    •  
      RAJAT SHUVRA ROY Says: 

      thnx a lot 4 ur kind info but the command “C:Program FilesApache Software FoundationApache2.2confopenssl.cnf” is not working…the command is saying that… the path is wrong..

       
    •  
      RAJAT SHUVRA ROY Says: 

      really,i was much confused before ur suggestion…thnx u.

       
    •  
      mjb Says: 

      Be aware on Win 64, you must uncomment the OTHER SSLSessionCache for things to work. The default SSLSessionCache setting will fail with a spurious “values must be > 8192)”

       
    •  
      David Says: 

      Hi

      Thanks a lot for the help on this especially on pointing to the openssl.cnf in command prompt.

      I still have a big problem, after doing all this, I restart my server and it says: “The requested operation has failed”. Do note that Iinstalled the following file for Apache: httpd-2.2.17-win32-x86-openssl-0.9.8o.msi.

      What can be the problem?

       
    •  
      Deb Z Says: 

      It’s been a bit of time, yet still your directions are great. I’ve just downloaded the WampServer, and was having the error “ordinal 924 could not be located in the dynamic link library LIBEAY32.dll” when trying to general the new certificate request. I replace the openssl.exe, libeay32.dll, and ssleay32.dll from an older version of PHP (i.e., version 5.2.17-Win32), and the command “magically” worked. (Think it may have to do with the setup -or lack thereof – of my machine.) From there on, it was clear sailing.

       
    •  
      mnutsch Says: 

      Rubayat,

      This tutorial was immensely helpful. Thank you for writing it.

       
    •  
      pranav Says: 

      Great article! Thanks!

       
    •  
      lwpro2 Says: 

      instead of
      “set OPENSSL_CONF=C:Program FilesApache Software FoundationApache2.2confopenssl.cnf”,
      we can specify the configuration file location by using “openssl req –config openssl.conf –new –out ./sss/blarg.csr –keyout ./ssl/blarg.pem”.

      and all is about generating certificate file and config httpd.conf to load the module and know where is the certificate. cheers.

       
    •  
      YC Says: 

      Hi Rubayat…

      I have a question here…. About the openssl.cnf file. We need to change all the directories in that file manually if we implement it in Windows?

       
      •  
        Rubayat Says: 

        Hi,

        We are not changing anything in that file. All we are doing is setting Windows Environment Variable properly to point to that files location.

         
    •  
      nanda Says: 

      what i’ve missed?
      after follow the steps, and i restart the apache
      then i open http://www.my-website.com is still doing nothing!, only ‘the page cannot display’

      please help me

       
    •  
      Pris Says: 

      Thank you so much for getting me back on track. I think it was removing the passphrase that tripped me up!

       
    •  
      Anshul Says: 

      Hi Rubiyat,

      Is it possible to specify 2 server certificates for within tag. The server certificate on my proxy server is expiring and before it expires i need to install a new certificate. I was wondering whether it was possible to have 2 certificates for the same ip address and domain specified in the vHosts configuration.

      Any help in this regard would be greatly appreciated.

       
      •  
        Rubayat Says: 

        So you want to use 2 SSL certificate on one vHost configuration for one domain? Thats probably not going to work.

        Logically there will be no way for the server to know which certificate is the one to serve for a particular domain.

        Why can’t you just link the new certificate when the old one expires?

         
    •  
      Robert Says: 

      Great guide, Rubayat!

       
     

    Leave a Reply

     

     

     

     

    Click the "Preview" button to preview your comment here.



     
  • 相关阅读:
    memset使用技巧
    AcWing 843. n-皇后问题
    【Oracle】从12c开始支持的Oralce新分页方案
    Oracle历年版本发布情况
    【SpringBoot】又写了一份新瓶装旧酒的CRUD程序
    【SpringBoot/Actuator】给SpringBoot程序添加Actuator监控管理
    Top Cybersecurity Companies for 2021
    SNAT、DNAT、MASQUERADE的区别
    Flannel的两种模式解析(VXLAN、host-gw)
    kubelet 配置资源预留的姿势
  • 原文地址:https://www.cnblogs.com/best-jobs/p/3508907.html
Copyright © 2011-2022 走看看