localhost에서 Apache에 HTTPS를 허용하려면 어떻게합니까?


193

localhost의 Apache에서 자체 서명 된 인증서로 HTTPS를 설정하라는 요청을 받았지만 실제로 어떻게합니까? 나는 전혀 모른다.


1
Serveo를 사용하십시오 ! ssh -R youruniquesubdomain:80:localhost:3000 serveo.net서브 도메인과 포트 번호를 확인하고 계속 진행하십시오https://youruniquesubdomain.serveo.net
totymedli

답변:


135

방금 이것을 시도 했습니다-Windows의 로컬 호스트 Apache에서 일부 개발 코드를 테스트해야했습니다 . 이것은 WAAAY보다 어려웠습니다. 그러나 많은 머리를 깎은 후 작동하는 단계는 다음과 같습니다.

내 Apache 설치 openssl.exe가 도움 이된다는 것을 알았습니다 . 사본이 없으면 다운로드해야합니다. 내 사본은 Apache2\bin폴더에 있었으므로 아래를 참조하십시오.

단계 :

  1. Apache conf 폴더에 대한 쓰기 권한이 있는지 확인하십시오.
  2. Apache2\conf폴더 에서 명령 프롬프트를 엽니 다
  3. 유형
    ..\bin\openssl req -config openssl.cnf -new -out blarg.csr -keyout blarg.pem
  4. 다음을 제외한 모든 질문을 비워 둘 수 있습니다.

    • PEM 암호 : "암호"와 같은 임시 암호
    • 공통 이름 : 서버의 호스트 이름

  5. 완료되면 다음을 입력하십시오.
    ..\bin\openssl rsa -in blarg.pem -out blarg.key

  6. 다음을 입력하여 자체 서명 된 인증서를 생성하십시오.
    ..\bin\openssl x509 -in blarg.csr -out blarg.cert -req -signkey blarg.key -days 365

  7. Apache conf\httpd.conf파일을 열고 SSL 모듈이 활성화되어 있는지 확인하십시오.이 줄의 시작 부분에는 해시가 없어야합니다.
    LoadModule ssl_module modules/mod_ssl.so

  8. 일부 Apache 설치는 SSL 구성을 별도의 파일에 배치합니다. 그렇다면 SSL conf 파일이 포함되어 있는지 확인하십시오. 내 경우에는이 줄의 주석을 해제해야했습니다.
    Include conf/extra/httpd-ssl.conf

  9. SSL 구성 httpd-ssl.conf에서 다음 줄을 업데이트해야했습니다.

    • 업데이트
      SSLSessionCache "shmcb:C:\Program Files (x86)\Zend\Apache2/logs/ssl_scache(512000)"

      SSLSessionCache "shmcb:C:/Progra\~2/Zend/Apache2/logs/ssl_scache(512000)"
      (모듈 혼동 경로에 브래킷, 그래서 우리는 그들을 탈출해야합니다)
    • DocumentRoot -웹 파일 폴더로 설정하십시오.
    • ServerName -서버의 호스트 이름
    • SSLCertificateFile "conf/blarg.cert"
    • SSLCertificateKeyFile "conf/blarg.key"

  10. Apache를 다시 시작하십시오.

  11. https://localhost/브라우저에 로드 하십시오.

잘만되면 당신은 이것을 지금까지 만들었습니다. 이 게시물을 다른 유용한 정보로 업데이트하십시오.

(스크린 샷은 Neil Obremski의 호의와 그의 유용한 기사 -현재는 구식입니다.)


2
감사. 또한 ErrorLog, TransferLog 및 CustomLog 지시문을 유효한 경로로 편집해야했습니다. 그렇지 않으면 Apache가 시작되지 않습니다.
Tamlyn

1
어떤 이유로 지침이 더 이상 또는 불완전하게 작동하지 않음
Jacobian

6
httpd.conf에서 다음과 같이 주석 처리를 제거해야 작동했습니다. LoadModule socache_shmcb_module modules / mod_socache_shmcb.so
erik

1
모듈 LoadModule socache_shmcb_module modules / mod_socache_shmcb.so를 추가하고 httpd-ssl.conf에서 250 행의 Custom ssl 로그 경로, CustomLog ".apache24 / logs / ssl_request.log"\
Wasim A .

5
.pem 및 .key 파일을 생성하려면 2 단계에서 2 개의 환경 변수를 설정해야했습니다. set OPENSSL_CONF = C : \ path \ to \ apache \ Apache2.4.4 \ conf \ openssl.cnf set RANDFILE = C : \ path \ to \ apache \ Apache2.4.4 \ conf \ .rnd
eosphere

57

나는 이것을 위해 ngrok ( https://ngrok.com/ )를 사용합니다. ngrok는 명령 줄 도구이며 localhost에 대한 터널을 만듭니다. http와 https 연결을 모두 만듭니다. 다운로드 한 후 다음 명령을 실행해야합니다.

ngrok http 80

(버전 2에서 구문은 ngrok http 80입니다. 버전 2에서는 모든 포트를 터널링 할 수 있습니다.)

몇 초 후에 두 개의 URL이 제공됩니다.

http://a_hexadecimal_number.ngrok.com
https://a_hexadecimal_number.ngrok.com

이제 두 URL 모두 로컬 호스트를 가리 킵니다.


1
@sudip, ngrok의 오픈 소스 코드는 수정없이 자체 서버에서 호스팅 할 수있는 방식으로 작동합니까? 그렇지 않은 경우 사용자 요청을 ngrok와 같은 외부 호스트로 리디렉션 하는 것이 좋지 않기 때문에 거의 쇼 토퍼입니다.
Pacerier

2
@Pacerier 나는 그것을 서버에서 사용하려고하지 않습니다. localhost에서 사용합니다 (Bcz 네트워크 공급자가 동적 IP를 제공합니다). 페이팔 IPN 테스트에 처음 사용했으며 완벽하게 작동했습니다. 왜 누군가가 서버에서 어떤 용도로 사용하는지 궁금합니다.
sudip

@sudip, 목적은 분명합니다. HTTP에서 작동하는 코드가 추가 코딩없이 HTTPS에서도 작동하도록하기 위해.
Pacerier

1
이것이 유용하지만 개방형 인터넷에 대한 귀하의 개발 기기에 대한 액세스를 허용하는 것은 엄청나게 안전하지 않은 것 같습니다. 이와 같은 것을 사용하면 보안 의식이있는 고용주에게 해고 당할 수 있습니다.
Andy M

@YumYumYum. V 1에서는 이전에 완전히 무료였습니다. 그러나 http 및 https 포트는 v 2에서 여전히 비어 있습니다 (포트 제한이 있는지 여부는 알 수 없음). 여기에서 무료 플랜을 확인하십시오 : ngrok.com/product#pricing
sudip

24

여기에 가장 간단한 방법이 있습니다

먼저 server.crtserver.key 파일 (첨부 파일에서 찾기)을 apache / conf / ssl 디렉토리에 복사 하십시오.

그런 다음 httpd.conf 파일을 열고 다음 줄을 추가하십시오.

Listen 80
Listen 443

NameVirtualHost *:80
NameVirtualHost *:443

<VirtualHost *:443>
    DocumentRoot "d:/wamp/www"  #your wamp www root dir
    ServerName localhost
    SSLEngine on
    SSLCertificateFile "d:/wamp/bin/apache/Apache2.4.4/conf/ssl/server.crt"
    SSLCertificateKeyFile "d:/wamp/bin/apache/Apache2.4.4/conf/ssl/server.key"
</VirtualHost>

3
또한 (/etc/apache2/httpd.conf)에서 모듈 LoadModule ssl_module libexec / apache2 / mod_ssl.so를 활성화해야했습니다
Alexey

17
나는 자신의 파일을 생성하는 대신 신뢰할 수없는 소스에서 * .crt * .key 파일을 다운로드하는 것이 얼마나 안전하고 위험한지 궁금합니다.
Petr Peller

4
@PetrPeller 우리는 지역 개발을 위해 https를 설정하고 있습니다. 왜 안전 / 위험을 원하십니까
Anil Gupta

7
해당 파일을 생성하는 방법에 대한 설명이 좋습니다. 알 수없는 소스에서 파일을 다운로드하는 것은 좋지 않은 일이지만 그러한 링크는 어느 시점에서 중단 될 수 있기 때문입니다.
Stephan Vierkant

2
이 튜토리얼은 훌륭한 digitalocean.com/community/tutorials/…
Dhiraj

13

웹 서버와주고받는 정보의 보안을 보호하려면 클라이언트와 서버 간의 통신 암호화를 활성화하는 것이 좋습니다. 이것을 종종 SSL 이라고 합니다 .

Apache2에서 자체 서명 된 인증서로 HTTPS를 설정해 봅시다. 따라야 할 단계를 나열하겠습니다.

  • 머신에 apache2 웹 서버를 설치하십시오. 리눅스 머신의 경우 터미널을 열고 다음을 입력하십시오.

sudo apt-get 설치 apache2

  • 성공적으로 설치 한 후 명령을 실행하여 apache2 서비스의 상태를 확인하십시오.

sudo 서비스 아파치 2 상태

출력해야합니다

Apache2 서비스 상태

  • 브라우저로 이동하여 입력

http : // localhost : 80

apache2의 기본 페이지가 이와 같은지 확인하십시오.

Apache2의 기본 출력

  • 웹 연결을 암호화하려면 CA (인증 기관)의 인증서가 필요하거나 자체 서명 된 인증서를 사용할 수 있습니다. 다음 명령을 사용하여 자체 서명 된 인증서를 작성하십시오.

openssl req -x509 -newkey rsa : 2048 -keyout mykey.key -out mycert.pem -days 365-노드

아래 표시된대로 정보를 작성하십시오.

openssl을 사용하여 자체 서명 된 인증서 작성

mykey.keymycert.pem 은 현재 작업 디렉토리에 작성되어야합니다.

  • 인증서와 키를 공통 위치로 옮기면 apache2 웹 서버에서 쉽게 찾을 수 있습니다. 다음 명령을 실행하겠습니다

sudo cp mycert.pem / etc / ssl / certs

sudo cp mykey.key / etc / ssl / private

  • 서버에서 SSL 모드를 활성화하자

sudo a2enmod ssl

다음과 같이 출력되어야합니다

SSL 사용

  • 위에서 생성 한 자체 서명 된 인증서와 키를 사용하도록 apache2를 구성 해 봅시다.

sudo vi /etc/apache2/sites-available/default-ssl.conf

이 두 줄을 찾아 인증서와 키 경로로 바꾸십시오.

머리 글자

default-conf

결정적인

구성 변경 후

  • 사이트 활성화

CD / etc / apache2 / sites-available /

sudo a2ensite default-ssl.conf

  • apache2 서비스를 다시 시작하십시오.

sudo 서비스 아파치 2 재시작

  • HTTPS에서 apache2 웹 서버를 확인하십시오. 브라우저를 다시 열고 입력

https : // localhost : 443

자체 서명 된 인증서로 서버를 구성했기 때문에 보려는 페이지가 안전하지 않다는 경고와 함께 이와 같은 결과가 출력되어야합니다.

여기에 이미지 설명을 입력하십시오

  • HTTPS 엔드 포인트로 apache2를 구성한 것을 축하합니다. 이제 고급 -> 예외 추가 -> 보안 예외 확인 을 클릭하면 기본 페이지가 다시 나타납니다.

예외 추가 후 페이지


가능한 경우 구성 파일을 편집하지 않는 것이 좋으므로 그대로 두었 default-ssl.conf습니다. 나는 이름을 바꾸는 대해이었다 mycertssl-cert-snakeoil난 그냥 것을 사용하므로이 파일이 이미 존재하지만! 그래서 데비안에서 두 단계를 안전하게 건너 뛸 수있었습니다.
Rolf

@Rolf 동의하지만 프로덕션 환경에서는 항상 새로운 인증서와 키를 사용합니다. 그것들을 어떻게 만들 수 있는지 보여주기 위해 데비안을위한 2 단계를 추가했습니다. 감사합니다 :)
Dinesh Kumar

경고가 표시되지 않도록 자체 서명 된 인증서를 인증 기관으로 추가 할 수있는 방법이 있습니까?
Aaron Franke

9

Windows + Apache 2.4 (예 :

  1. httpd.conf파일 에서 ssl_module의 주석을 해제 하십시오.

    LoadModule ssl_module modules/mod_ssl.so
    
  2. httpd.conf파일 에서 80 포트와 같은 443 포트를 수신 하십시오.

    Listen 80
    Listen 443
    
  3. 주석 해제 httpd.conf파일에 가상 호스트 포함 .

    # Virtual hosts
    Include conf/extra/httpd-vhosts.conf
    
  4. 귀하의 VirtualHost를 추가하십시오 conf/extra/httpd-vhosts.conf

    <VirtualHost _default_:443>
        DocumentRoot "D:/www"  #your site directory path
        ServerName localhost
        #ServerAlias localhost.com localhost2.com
        SSLEngine on
        SSLCertificateFile "${SRVROOT}/conf/ssl/server.crt"
        SSLCertificateKeyFile "${SRVROOT}/conf/ssl/server.key"
        <Directory "D:/www">
            Options -Indexes +FollowSymLinks +ExecCGI
            AllowOverride All
            Require all granted
        </Directory>
    </VirtualHost>
    

포트 번호 443SSL......행만 일반 http 구성과 다릅니다.

구성 파일을 저장하고 아파치 서비스를 다시 시작하십시오. 그런 다음 https : // localhost /를 방문 하십시오.

처음에는 안전하지 않다는 경고가 웹 브라우저에 표시됩니다. 계속을 선택하십시오.


이것은 XP Home, Apache 2.4에서 나를 위해 일했습니다. 이전 게시물에서 2 개의 인증서 파일을 복사했습니다 (Anil Gupta 작성). 주석 처리되지 않은 mod_ssl과 httpd.conf에 httpd-vhosts.conf가 포함되어 httpd-vhosts.conf에 Anil Gupta의 VirtualHost 지시문 (일부 경로가 조정 됨)이 추가되었습니다.
jogi99

7

openssl 설치가 편리하다고 가정하면 실제로 매우 쉽습니다. (어떤 플랫폼에 있습니까?)

linux / solaris / mac os / x를 사용한다고 가정하면 Van의 Apache SSL / TLS mini-HOWTO 는 여기서 재현하지 않는 훌륭한 연습을 제공합니다.

그러나 요약은 자체 서명 된 인증서를 작성해야한다는 것입니다. 아마도 퍼블릭 웹 서버가 아닌 개발을 위해 아마도 localhost에 대해 아파치를 실행하고 있기 때문에 자체 서명 된 인증서를 신뢰할 수 있고 브라우저가 사용자에게 던지는 경고를 무시할 수 있다는 것을 알게 될 것입니다.


안녕하세요, 저는 Windows OS에서 일하고 있습니다. 자체 서명 된 인증서는 다운로드하거나 다른 방법으로 다운로드해야합니까?
KennC.

3
아니. 자체 서명 된 인증서를 직접 작성하십시오. 아파치 httpd + ssl 설정이 있습니까? 이 작업을 수행하려면 SSL이 필요합니다. 이 사이트 : rubayathasan.com/tutorial/apache-ssl-on-windows 는 ssl이 Windows에서 작동하는 데 대한 좋은 정보를 제공합니다. 몇 가지 명령 줄 작업을 수행하지만 어쨌든 좋습니다. :-)
Pete Clark

3
링크가 죽었다 :(
kpuccino

그래, 죽었어 그것은 당신을위한 인터넷입니다 ... 그러나, @kayakinkoder에 의해 참조되는 CentOS Wiki에 대한 링크도 좋습니다 : wiki.centos.org/HowTos/Https 당신이 맥이라면이 글도 합리적으로 보입니다 : gist. github.com/nrollr/4daba07c67adcb30693e
Pete Clark

4

이것은 Apache2와 비슷한 Ubuntu, Mint이어야합니다.

좋은 가이드이므로 다음을 따르십시오.

https://www.digitalocean.com/community/tutorials/how-to-create-a-ssl-certificate-on-apache-for-ubuntu-14-04

ssl.conf를 이와 유사하거나 유사하게 남겨 두십시오.

<VirtualHost _default_:443>
        ServerAdmin your@email.com
        ServerName localhost
        ServerAlias www.localhost.com

        DocumentRoot /var/www


    SSLEngine on
    SSLCertificateFile /etc/apache2/ssl/apache.crt
    SSLCertificateKeyFile /etc/apache2/ssl/apache.key

당신은 그것을 얻을 수 있습니다.

리눅스에 도움이되기를 바랍니다.


2

매우 간단합니다.

다음 명령을 실행하십시오.

sudo a2enmod ssl

sudo service apache2 restart

sudo a2ensite default-ssl.conf

그게 다야, 끝났어.

https를 항상 사용하도록 SSL을 강제 실행하려면 파일을 편집하십시오.

sudo nano /etc/apache2/sites-available/000-default.conf

이 한 줄을 추가하십시오

<VirtualHost *:80>
        . . .

        Redirect "/" "https://your_domain_or_IP/"

        . . .
</VirtualHost>

그런 다음 다시 시작

sudo service apache2 restart

그리고 당신은 systemctl reload apache2후에 실행해야합니다 sudo a2ensite default-ssl.conf.
까지

2

2020 업데이트

나는이 문제로 어려움을 겪고 있기 때문에이 답변을 게시하고 있으며 Chrome은 주제 대체 이름 을 요구하여 보안을 업데이트했습니다 . WAMP가 이미 설치되어 있다고 가정합니다.

1 단계

OpenSSL Light 다운로드 및 설치


** 2 단계 (선택 사항) **

이 부분은 선택 사항이지만 나중에 명령을 실행하기가 더 쉽습니다. 이 단계를 건너 뛰면 명령을 실행할 openssl.exe의 전체 경로를 제공해야합니다. 설정하려면 환경 변수에서 openssl.exe 경로를 업데이트하십시오.

환경 변수-> 시스템 변수-> 경로-> 편집-> 새로 만들기-> c : \ Program Files \ OpenSSL-Win64 \ bin


** 단계 3 **

디렉토리 에 "key" 라는 이름의 폴더를 만듭니다 c:/wamp64/bin/apache/apache2.4.27(your version number)/conf/.

내용으로 CA MyCompanyCA.cnf에 대한 구성 파일을 작성 하십시오 (필요에 따라 변경할 수 있음).

[ req ]
distinguished_name  = req_distinguished_name
x509_extensions     = root_ca

[ req_distinguished_name ]
countryName             = Country Name (2 letter code)
countryName_min         = 2
countryName_max         = 2
stateOrProvinceName     = State or Province Name (full name)
localityName            = Locality Name (eg, city)
0.organizationName      = Organization Name (eg, company)
organizationalUnitName  = Organizational Unit Name (eg, section)
commonName              = Common Name (eg, fully qualified host name)
commonName_max          = 64
emailAddress            = Email Address
emailAddress_max        = 64

[ root_ca ]
basicConstraints            = critical, CA:true

웹 서버 인증서 의 확장 구성 파일 MyCompanyLocalhost.ext 를 작성하십시오 .

subjectAltName = @alt_names
extendedKeyUsage = serverAuth

[alt_names]
DNS.1   = localhost
DNS.2   = mycy.mycompany.com

** 단계 4 **

키와 인증서를 생성하려면 주어진 순서대로 다음 명령을 실행하십시오.

openssl req -x509 -newkey rsa:2048 -out MyCompanyCA.cer -outform PEM -keyout MyCompanyCA.pvk -days 10000 -verbose -config MyCompanyCA.cnf -nodes -sha256 -subj "/CN=MyCompany CA"
openssl req -newkey rsa:2048 -keyout MyCompanyLocalhost.pvk -out MyCompanyLocalhost.req -subj /CN=localhost -sha256 -nodes
openssl x509 -req -CA MyCompanyCA.cer -CAkey MyCompanyCA.pvk -in MyCompanyLocalhost.req -out MyCompanyLocalhost.cer -days 10000 -extfile MyCompanyLocalhost.ext -sha256 -set_serial 0x1111

결과적으로 MyCompanyCA.cer , MyCompanyLocalhost.cerMyCompanyLocalhost.pvk 파일이 생성됩니다.


** 단계 5 **

아래에 MyCompanyCA.cer 을 설치하십시오.

제어판-> 사용자 인증서 관리-> 신뢰할 수있는 루트 인증 기관-> 인증서

MyCompanyLocalhost.cer 를 설치하려면 두 번 클릭하십시오.


** 6 단계 **

열기 c:/wamp64/bin/apache/apache2.4.27(your version number)/conf/httpd.conf취소 코멘트합니다 (# 제거) 다음과 같은 3 선 :

LoadModule ssl_module modules/mod_ssl.so
Include conf/extra/httpd-ssl.conf
LoadModule socache_shmcb_module modules/mod_socache_shmcb.so

** 단계 7 **

c:/wamp64/bin/apache/apache2.4.37/conf/extra/httpd-ssl.conf모든 매개 변수를 열고 아래 표시된 매개 변수로 변경하십시오.

Directory "c:/wamp64/www"
DocumentRoot "c:/wamp64/www"
ServerName localhost:443
ServerAdmin admin@example.com
ErrorLog "c:/wamp64/bin/apache/apache2.4.27/logs/error.log"
TransferLog "c:/wamp64/bin/apache/apache2.4.27/logs/access.log"
SSLCertificateFile "c:/wamp64/bin/apache/apache2.4.27/conf/key/MyCompanyLocalhost.cer"
SSLCertificateKeyFile "c:/wamp64/bin/apache/apache2.4.27/conf/key/MyCompanyLocalhost.pvk"
SSLSessionCache "shmcb:c:/wamp64/bin/apache/apache2.4.27/logs/ssl_scache(512000)"
CustomLog "c:/wamp64/bin/apache/apache2.4.27/logs/ssl_request.log" \
          "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"

참고 : 이것은 까다로운 부분입니다. 이 파일을 편집하는 동안 약간의 실수가 있으면 SSL이 작동하지 않습니다. 편집하기 전에 사본을 만드십시오.


** 단계 8 **

Wamp and Chrome을 다시 시작하십시오. 로컬 호스트는 이제 안전합니다 : https : // localhost


Linux에 대한 안내서가 있습니까?
Aaron Franke

불행히도, 나는하지 않습니다.
CodeWarrior

1

이 CentOS 용 HowTo는 따르기 쉽고 약 5 분이 소요되었습니다. https://wiki.centos.org/HowTos/Https

여기서는 각 단계를 자세히 설명하지 않지만 주요 단계는 다음과 같습니다.

1.) 아파치 용 openssl 모듈을 설치하십시오 (아직 설치되지 않은 경우).

2.) 자체 서명 된 인증서 생성

-이 시점에서 https : // localhost를 성공적으로 방문 할 수 있어야합니다

3.) 필요한 경우 가상 호스트 설정


1

이것은 Apache24가 설치된 Windows 10에서 작동했습니다.

1-하단에 추가 C:/Apache24/conf/httpd.conf

Listen 443
<VirtualHost *:443>
    DocumentRoot "C:/Apache24/htdocs"
    ServerName localhost
    SSLEngine on
    SSLCertificateFile "C:/Apache24/conf/ssl/server.crt"
    SSLCertificateKeyFile "C:/Apache24/conf/ssl/server.key"
</VirtualHost>

2- 폴더에 server.crtserver.key파일을 추가하십시오 C:/Apache24/conf/ssl. 이 두 파일을 찾으려면이 페이지의 다른 답변을 참조하십시오.

그게 다야!


그렇습니다. 인증서를 생성하기 위해 StephanieQ의 1-3 단계를 사용했으며 cygwin으로 * .crt 파일을 생성하기 위해 "openssl x509 -req -in server.csr -signkey server.key -out server.crt"보다 사용했습니다.
b3wii

httpd.conf파일 이 없습니다 . 어떤 파일을 넣습니까? 여기에 내가이 텍스트 내부를 넣을 때 발생하는 상황 apache2.conf:Invalid command 'SSLEngine', perhaps misspelled or defined by a module not included in the server configuration
아론 프랑케

1

tl; dr

ssh -R youruniquesubdomain:80:localhost:3000 serveo.net

https://youruniquesubdomain.serveo.net 에서 로컬 환경에 액세스 할 수 있습니다.

Serveo 가 최고입니다

  • 가입이 없습니다.
  • 설치가 없습니다.
  • HTTPS가 있습니다.
  • 전 세계에 액세스 할 수 있습니다.
  • 사용자 지정 수정 하위 도메인을 지정할 수 있습니다.
  • 자체 호스팅 할 수 있으므로 서비스가 다운 되더라도 자신의 도메인을 사용하고 향후 증거가 될 수 있습니다.

이 서비스를 찾았을 때 믿을 수 없었습니다. 모든 것을 제공하며 사용하기가 가장 쉽습니다. 모든 문제에 대해 쉽고 고통없는 도구가 있다면 ...


2020 년에는 더 이상 작동하지 않으며 페이지가 영원히로드됩니다. 그러나 어떤 이유로 SSH 명령이 여전히 작동합니까?
Aaron Franke

1

여기서 Windows 10에서 Apache를 실행하십시오. Simon이 최고 답변에서 작성한 인증서를 Chrome이 신뢰하도록 할 수 없었습니다. 내가 끝낸 것은 PowerShell을 사용하여 자체 서명 된 인증서를 생성하는 것이 었습니다.

1 단계-자체 서명 된 인증서 생성

PowerShell
New-SelfSignedCertificate -DnsName "localhost" -CertStoreLocation "cert:\LocalMachine\My" 1에서

2 단계-인증서 구성 및 내보내기

입력 Certificate윈도우 검색 창에, 클릭 Manage Computer Certificates제안 제어판 항목을 선택합니다.

나타나는 인증서 관리 프로그램 (certlm)에서 이제 아래에 localhost키가 표시됩니다 Personal >> Certificates.

이 인증서를에 복사했습니다 Trusted Root Certification Authorities. 그것이 필요한지 확실하지 않다는 점에서 정직합니다.

새로 복사 한 인증서를 선택하고 두 번 클릭하십시오 (로컬 호스트 인증서). 인증서 모달에서 Details탭을 클릭 한 다음 Copy to File...버튼을 클릭하십시오.

그러면 내보내기 마법사가 나타나고 개인 키를 내보내도록 선택하고 다음을 클릭하십시오. 나는 또한 Export all extended properties(다시 말해서, 그것이 필요한지 확실하지 않다)를 선택했다. 간단한 비밀번호 ( pass)와 기본 암호화 를 사용하기로했습니다 . 내보낼 폴더를 선택하고 파일 이름을 지정하십시오. 필요한 경우 언제든지 파일을 이동하고 이름을 바꿀 수 있습니다. 간단히하기 위해 Apache 설치 (내 경우 :) 아래의 conf 폴더에 복사 C:\apache\conf하고 파일 이름을 지정하십시오 myCert(결과 파일은 .pfx파일입니다)

3 단계-Apache .pfx와 함께 사용할 파일 변환

여기에서 나는 기본적으로 튜토리얼을 따라 여기에 있지만, 사이트가 다운 될 것을 나는 경우 (우리의 설정을 쥐게) 여기에 설명을 추가합니다.

/apache/conf/폴더 에서 명령 프롬프트를 엽니 다
. 다음 명령을 실행하십시오. 참고 : 이것은 아파치 루트 폴더 openssl.exebin폴더에 있다고 가정 합니다 (표준 / 기본값이어야 함).

..\bin\openssl pkcs12 -in myCert.pfx -nocerts -out privateKey.pem

암호를 입력하라는 메시지가 표시되면 .pfx파일 을 내보낼 때 2 단계에 입력 한 내용을 입력 하십시오. 제 경우에는입니다 pass. PEM 문구에 동일한 비밀번호를 입력하고 다시 확인했습니다. privateKey.pemconf 폴더에 새로운 파일이 생성됩니다 .

그런 다음 실행

..\bin\openssl rsa -in privateKey.pem -out private.pem

다시 비밀번호 ( Enter pass phrase for privateKey.pem:)를 입력하라는 메시지가 표시 됩니다 privateKey.pem.에 설정 한 비밀번호를 사용하십시오 . (내 경우에는 pass) 폴더 에 새
메시지가 표시된 메시지가 표시 됩니다. SSLCertificateKeyFile이됩니다.writing RSA keyprivate.pemconf/

이제 해당 서버 인증서를 생성합니다. 운영:

..\bin\openssl pkcs12 -in myCert.pfx -clcerts -nokeys -out EntrustCert.pem

암호를 입력하라는 메시지가 표시되면 .pfx파일 을 내보낼 때 2 단계에 입력 한 내용을 입력 하십시오. 그것을 입력하면 이제 폴더에 파일 EntrustCert.pem이 있습니다 conf. 이것은 SSLCertificateFile입니다

4 단계-구성 httpd.conf

서버의 키와 인증서로 생성 된 새 파일을 사용하십시오. 문서 루트를 파일이있는 위치로 변경하십시오!

ServerName localhost:80
Protocols h2 h2c http/1.1
<Directory />
    Options FollowSymLinks
    AllowOverride All
</Directory>

<VirtualHost _default_:443>
  ServerName localhost:443
  DocumentRoot ${SRVROOT}/htdocs/MYSITE
  SSLEngine on
  SSLCertificateFile "${SRVROOT}/conf/EntrustCert.pem"
  SSLCertificateKeyFile "${SRVROOT}/conf/private.pem"
</VirtualHost>

또한 httpd.conf:

  • LoadModule ssl_module modules/mod_ssl.so주석 처리가 해제되어 있는지 확인하십시오 ( #앞에 없음 )
  • 주석 해제 LoadModule socache_shmcb_module modules/mod_socache_shmcb.so
  • 주석 해제 LoadModule http2_module modules/mod_http2.so
  • 주석 해제 Include conf/extra/httpd-ssl.conf (참고 : 파일이있는 위치에 있는지 확인하십시오!)

컬 및 오픈 SSL 라이브러리도 포함되어 있습니다.

# load curl and open ssl libraries
LoadFile "C:\php\libeay32.dll"
LoadFile "C:\php\ssleay32.dll"
LoadFile "C:\php\libssh2.dll"

이 모듈들은 필요하지 않지만, 그것들을 활성화 시켰습니다.
LoadModule rewrite_module modules/mod_rewrite.so
LoadModule filter_module modules/mod_filter.so
LoadModule deflate_module modules/mod_deflate.so

5 단계-구성 httpd-ssl.conf

extra/폴더 의 폴더에는 conf/이라는 파일이 표시됩니다 httpd-ssl.conf.

5a. 변경DocumentRoot -를 DocumentRoot기본값에서 파일이있는 디렉토리로 변경하십시오 .

5b. 변경ServerName -를 ServerName기본값 (예 :) www.example.com:443에서localhost:443

5c. 변경SSLCertificateFile
변경 SSLCertificateFile기본에서 ( ${SRVROOT}/conf/server.crt로에게)${SRVROOT}/conf/EntrustCert.pem

5c. 변경SSLCertificateKeyFile
변경 SSLCertificateKeyFile기본에서 ( ${SRVROOT}/conf/server.key로에게)${SRVROOT}/conf/private.pem

<VirtualHost _default_:443>태그 에 모두 함께 .

#   General setup for the virtual host
DocumentRoot "${SRVROOT}/htdocs/MYSITE"
ServerName localhost:443
ServerAdmin admin@example.com
ErrorLog "${SRVROOT}/logs/error.log"
TransferLog "${SRVROOT}/logs/access.log"

#   SSL Engine Switch:
#   Enable/Disable SSL for this virtual host.
SSLEngine on

#   Server Certificate:
#   Point SSLCertificateFile at a PEM encoded certificate.  If
#   the certificate is encrypted, then you will be prompted for a
#   pass phrase.  Note that a kill -HUP will prompt again.  Keep
#   in mind that if you have both an RSA and a DSA certificate you
#   can configure both in parallel (to also allow the use of DSA
#   ciphers, etc.)
#   Some ECC cipher suites (http://www.ietf.org/rfc/rfc4492.txt)
#   require an ECC certificate which can also be configured in
#   parallel.
SSLCertificateFile "${SRVROOT}/conf/EntrustCert.pem"
#SSLCertificateFile "${SRVROOT}/conf/server-dsa.crt"
#SSLCertificateFile "${SRVROOT}/conf/server-ecc.crt"

#   Server Private Key:
#   If the key is not combined with the certificate, use this
#   directive to point at the key file.  Keep in mind that if
#   you've both a RSA and a DSA private key you can configure
#   both in parallel (to also allow the use of DSA ciphers, etc.)
#   ECC keys, when in use, can also be configured in parallel
SSLCertificateKeyFile "${SRVROOT}/conf/private.pem"
#SSLCertificateKeyFile "${SRVROOT}/conf/server-dsa.key"
#SSLCertificateKeyFile "${SRVROOT}/conf/server-ecc.key"

아파치 다시 시작

이러한 변경을 한 후에 는 보안 경고와 작은 자물쇠없이 Apache를 다시 시작하고 https : // localhost로 이동할 수 있습니다 !

보안 로컬 호스트

나는 이것이 누군가를 돕기를 바랍니다! 😊

출처 :
1.) 자체 서명 인증서 생성에 대한 Auri Rahimzadeh의 답변
2.) Entrust Datacard-.pfx를 Apache 서버와 함께 사용하려면 어떻게 변환합니까?


0

또 다른 간단한 방법은 우분투에서 파이썬 서버를 사용하는 것입니다.

  1. 터미널에서 다음 명령으로 server.xml을 생성하십시오.

    openssl req -new -x509 -keyout server.pem -out server.pem -days 365 -nodes

    참고 : openssl이 설치 되었다고 가정합니다 .

  2. 라는 이름의 파일에 코드 아래에 저장 simple-https-server.py있는 서버를 실행하려는 디렉토리입니다.

    import BaseHTTPServer, SimpleHTTPServer
    import ssl
    
    httpd = BaseHTTPServer.HTTPServer(('localhost', 4443), SimpleHTTPServer.SimpleHTTPRequestHandler)
    httpd.socket = ssl.wrap_socket (httpd.socket, certfile='./server.pem', server_side=True)
    httpd.serve_forever()
    
  3. 터미널에서 서버를 실행하십시오.

    python simple-https-server.py

  4. 다음 페이지를 방문하십시오.

    https://localhost:4443

추가 사항 : :

  1. 당신은 변경할 수 있습니다 포트simple-https-server.py라인 파일

    httpd = BaseHTTPServer.HTTPServer(('localhost', 4443), SimpleHTTPServer.SimpleHTTPRequestHandler)

  2. 위의 동일한 줄에서 IP변경할localhost 수 있습니다 .

    httpd = BaseHTTPServer.HTTPServer(('10.7.1.3', 4443), SimpleHTTPServer.SimpleHTTPRequestHandler)

    네트워크에 연결된 모든 기기의 페이지에 액세스하십시오. '모바일에서 HTML5 GeoLocation API를 테스트해야하고 Chrome이 보안 연결에서만 API를 제한합니다'와 같은 경우에 매우 유용합니다.

요지 : https://gist.github.com/dergachev/7028596

http://www.piware.de/2011/01/creating-an-https-server-in-python/


0

macOS를 사용하는 사람들에게 이것은 로컬 웹 개발 환경을 설정 하는 훌륭한 안내서 https://getgrav.org/blog/macos-sierra-apache-multiple-php-versions 입니다. Andy Miller는 3 부 https://getgrav.org/blog/macos-sierra-apache-ssl 에서 자체 서명 된 인증서로 아파치를 설정하는 방법을 설명합니다.

이것이 핵심 명령입니다.

openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout server.key -out server.crt

그러나 따라야 할 몇 가지 단계가 있으므로 확인하고 행운을 빕니다! ;)


0

Chrome에서 완벽하게 작동하는 @CodeWarrior의 훌륭한 답변에 무언가를 추가하고 싶지만 Firefox의 경우 추가 단계가 필요합니다.

Firefox는 Windows가 기본적으로 수행하는 CA 인증서를 강제하지 않으므로 계속 진행하여 about:config아래로 스크롤 security.enterprise_roots.enabled 하여 true로 변경해야합니다.

이제 귀하의 인증서는 Firefox에서도 유효합니다.

물론 이것은 SSL 신뢰가 중요한 보안 관심사이며 의미를 알고있는 경우에만이 설정을 변경하기 때문에 개발 목적으로 만 사용됩니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.