$signature = base64_encode ( hash_hmac ( 'sha1' , $requestDate , $awsSecretKey , true ) ) ;
<?xml version = "1.0" encoding = "UTF-8" ?> <DistributionConfig xmlns = "http://cloudfront.amazonaws.com/doc/2010-11-01/" > <CustomOrigin > <DNSName > www.example.com </DNSName > <HTTPPort > 80 </HTTPPort > <OriginProtocolPolicy > http-only </OriginProtocolPolicy > </CustomOrigin > <CallerReference > your unique caller reference </CallerReference > <CNAME > mysite.example.com </CNAME > <Comment > My comments </Comment > <Enabled > true </Enabled > <TrustedSigners > <Self /> </TrustedSigners > <Logging > <Bucket > mylogs.s3.amazonaws.com </Bucket > <Prefix > myprefix/ </Prefix > </Logging > </DistributionConfig >
<?xml version = "1.0" encoding = "UTF-8" ?> <DistributionConfig xmlns = "http://cloudfront.amazonaws.com/doc/2010-11-01/" > <CustomOrigin > <DNSName > www.example.com </DNSName > <HTTPPort > 80 </HTTPPort > <OriginProtocolPolicy > http-only </OriginProtocolPolicy > </CustomOrigin > <CallerReference > your unique caller reference </CallerReference > <CNAME > mysite.example.com </CNAME > <Comment > My comments </Comment > <Enabled > true </Enabled > <TrustedSigners > <Self /> </TrustedSigners > <Logging > <Bucket > mylogs.s3.amazonaws.com </Bucket > <Prefix > myprefix/ </Prefix > </Logging > </DistributionConfig >
<?xml version = "1.0" encoding = "UTF-8" ?> <DistributionConfig xmlns = "http://cloudfront.amazonaws.com/doc/2010-11-01/" > <CustomOrigin > <DNSName > www.example.com </DNSName > <HTTPPort > 80 </HTTPPort > <OriginProtocolPolicy > http-only </OriginProtocolPolicy > </CustomOrigin > <CallerReference > your unique caller reference </CallerReference > <CNAME > mysite.example.com </CNAME > <Comment > My comments </Comment > <Enabled > true </Enabled > <TrustedSigners > <Self /> </TrustedSigners > <Logging > <Bucket > mylogs.s3.amazonaws.com </Bucket > <Prefix > myprefix/ </Prefix > </Logging > </DistributionConfig >
<?xml version = "1.0" encoding = "UTF-8" ?> <DistributionConfig xmlns = "http://cloudfront.amazonaws.com/doc/2010-11-01/" > <CustomOrigin > <DNSName > www.example.com </DNSName > <HTTPPort > 80 </HTTPPort > <OriginProtocolPolicy > http-only </OriginProtocolPolicy > </CustomOrigin > <CallerReference > your unique caller reference </CallerReference > <CNAME > mysite.example.com </CNAME > <Comment > My comments </Comment > <Enabled > true </Enabled > <TrustedSigners > <Self /> </TrustedSigners > <Logging > <Bucket > mylogs.s3.amazonaws.com </Bucket > <Prefix > myprefix/ </Prefix > </Logging > </DistributionConfig >
<?xml version = "1.0" encoding = "UTF-8" ?> <DistributionConfig xmlns = "http://cloudfront.amazonaws.com/doc/2010-11-01/" > <CustomOrigin > <DNSName > www.example.com </DNSName > <HTTPPort > 80 </HTTPPort > <OriginProtocolPolicy > http-only </OriginProtocolPolicy > </CustomOrigin > <CallerReference > your unique caller reference </CallerReference > <CNAME > mysite.example.com </CNAME > <Comment > My comments </Comment > <Enabled > true </Enabled > <TrustedSigners > <Self /> </TrustedSigners > <Logging > <Bucket > mylogs.s3.amazonaws.com </Bucket > <Prefix > myprefix/ </Prefix > </Logging > </DistributionConfig >
<?xml version = "1.0" encoding = "UTF-8" ?> <DistributionConfig xmlns = "http://cloudfront.amazonaws.com/doc/2010-11-01/" > <CustomOrigin > <DNSName > www.example.com </DNSName > <HTTPPort > 80 </HTTPPort > <OriginProtocolPolicy > http-only </OriginProtocolPolicy > </CustomOrigin > <CallerReference > your unique caller reference </CallerReference > <CNAME > mysite.example.com </CNAME > <Comment > My comments </Comment > <Enabled > true </Enabled > <TrustedSigners > <Self /> </TrustedSigners > <Logging > <Bucket > mylogs.s3.amazonaws.com </Bucket > <Prefix > myprefix/ </Prefix > </Logging > </DistributionConfig >
<?xml version = "1.0" encoding = "UTF-8" ?> <DistributionConfig xmlns = "http://cloudfront.amazonaws.com/doc/2010-11-01/" > <CustomOrigin > <DNSName > www.example.com </DNSName > <HTTPPort > 80 </HTTPPort > <OriginProtocolPolicy > http-only </OriginProtocolPolicy > </CustomOrigin > <CallerReference > your unique caller reference </CallerReference > <CNAME > mysite.example.com </CNAME > <Comment > My comments </Comment > <Enabled > true </Enabled > <TrustedSigners > <Self /> </TrustedSigners > <Logging > <Bucket > mylogs.s3.amazonaws.com </Bucket > <Prefix > myprefix/ </Prefix > </Logging > </DistributionConfig >
<?xml version = "1.0" encoding = "UTF-8" ?> <DistributionConfig xmlns = "http://cloudfront.amazonaws.com/doc/2010-11-01/" > <CustomOrigin > <DNSName > www.example.com </DNSName > <HTTPPort > 80 </HTTPPort > <OriginProtocolPolicy > http-only </OriginProtocolPolicy > </CustomOrigin > <CallerReference > your unique caller reference </CallerReference > <CNAME > mysite.example.com </CNAME > <Comment > My comments </Comment > <Enabled > true </Enabled > <TrustedSigners > <Self /> </TrustedSigners > <Logging > <Bucket > mylogs.s3.amazonaws.com </Bucket > <Prefix > myprefix/ </Prefix > </Logging > </DistributionConfig >
<?xml version = "1.0" encoding = "UTF-8" ?> <DistributionConfig xmlns = "http://cloudfront.amazonaws.com/doc/2010-11-01/" > <CustomOrigin > <DNSName > www.example.com </DNSName > <HTTPPort > 80 </HTTPPort > <OriginProtocolPolicy > http-only </OriginProtocolPolicy > </CustomOrigin > <CallerReference > your unique caller reference </CallerReference > <CNAME > mysite.example.com </CNAME > <Comment > My comments </Comment > <Enabled > true </Enabled > <TrustedSigners > <Self /> </TrustedSigners > <Logging > <Bucket > mylogs.s3.amazonaws.com </Bucket > <Prefix > myprefix/ </Prefix > </Logging > </DistributionConfig >
<?xml version = "1.0" encoding = "UTF-8" ?> <DistributionConfig xmlns = "http://cloudfront.amazonaws.com/doc/2010-11-01/" > <CustomOrigin > <DNSName > www.example.com </DNSName > <HTTPPort > 80 </HTTPPort > <OriginProtocolPolicy > http-only </OriginProtocolPolicy > </CustomOrigin > <CallerReference > your unique caller reference </CallerReference > <CNAME > mysite.example.com </CNAME > <Comment > My comments </Comment > <Enabled > true </Enabled > <TrustedSigners > <Self /> </TrustedSigners > <Logging > <Bucket > mylogs.s3.amazonaws.com </Bucket > <Prefix > myprefix/ </Prefix > </Logging > </DistributionConfig >
<?xml version = "1.0" encoding = "UTF-8" ?> <DistributionConfig xmlns = "http://cloudfront.amazonaws.com/doc/2010-11-01/" > <CustomOrigin > <DNSName > www.example.com </DNSName > <HTTPPort > 80 </HTTPPort > <OriginProtocolPolicy > http-only </OriginProtocolPolicy > </CustomOrigin > <CallerReference > your unique caller reference </CallerReference > <CNAME > mysite.example.com </CNAME > <Comment > My comments </Comment > <Enabled > true </Enabled > <TrustedSigners > <Self /> </TrustedSigners > <Logging > <Bucket > mylogs.s3.amazonaws.com </Bucket > <Prefix > myprefix/ </Prefix > </Logging > </DistributionConfig >
<?xml version = "1.0" encoding = "UTF-8" ?> <DistributionConfig xmlns = "http://cloudfront.amazonaws.com/doc/2010-11-01/" > <CustomOrigin > <DNSName > www.example.com </DNSName > <HTTPPort > 80 </HTTPPort > <OriginProtocolPolicy > http-only </OriginProtocolPolicy > </CustomOrigin > <CallerReference > your unique caller reference </CallerReference > <CNAME > mysite.example.com </CNAME > <Comment > My comments </Comment > <Enabled > true </Enabled > <TrustedSigners > <Self /> </TrustedSigners > <Logging > <Bucket > mylogs.s3.amazonaws.com </Bucket > <Prefix > myprefix/ </Prefix > </Logging > </DistributionConfig >
<?xml version = "1.0" encoding = "UTF-8" ?> <DistributionConfig xmlns = "http://cloudfront.amazonaws.com/doc/2010-11-01/" > <CustomOrigin > <DNSName > www.example.com </DNSName > <HTTPPort > 80 </HTTPPort > <OriginProtocolPolicy > http-only </OriginProtocolPolicy > </CustomOrigin > <CallerReference > your unique caller reference </CallerReference > <CNAME > mysite.example.com </CNAME > <Comment > My comments </Comment > <Enabled > true </Enabled > <TrustedSigners > <Self /> </TrustedSigners > <Logging > <Bucket > mylogs.s3.amazonaws.com </Bucket > <Prefix > myprefix/ </Prefix > </Logging > </DistributionConfig >
<?xml version = "1.0" encoding = "UTF-8" ?> <DistributionConfig xmlns = "http://cloudfront.amazonaws.com/doc/2010-11-01/" > <CustomOrigin > <DNSName > www.example.com </DNSName > <HTTPPort > 80 </HTTPPort > <OriginProtocolPolicy > http-only </OriginProtocolPolicy > </CustomOrigin > <CallerReference > your unique caller reference </CallerReference > <CNAME > mysite.example.com </CNAME > <Comment > My comments </Comment > <Enabled > true </Enabled > <TrustedSigners > <Self /> </TrustedSigners > <Logging > <Bucket > mylogs.s3.amazonaws.com </Bucket > <Prefix > myprefix/ </Prefix > </Logging > </DistributionConfig >
<?xml version = "1.0" encoding = "UTF-8" ?> <DistributionConfig xmlns = "http://cloudfront.amazonaws.com/doc/2010-11-01/" > <CustomOrigin > <DNSName > www.example.com </DNSName > <HTTPPort > 80 </HTTPPort > <OriginProtocolPolicy > http-only </OriginProtocolPolicy > </CustomOrigin > <CallerReference > your unique caller reference </CallerReference > <CNAME > mysite.example.com </CNAME > <Comment > My comments </Comment > <Enabled > true </Enabled > <TrustedSigners > <Self /> </TrustedSigners > <Logging > <Bucket > mylogs.s3.amazonaws.com </Bucket > <Prefix > myprefix/ </Prefix > </Logging > </DistributionConfig >
<?xml version = "1.0" encoding = "UTF-8" ?> <DistributionConfig xmlns = "http://cloudfront.amazonaws.com/doc/2010-11-01/" > <CustomOrigin > <DNSName > www.example.com </DNSName > <HTTPPort > 80 </HTTPPort > <OriginProtocolPolicy > http-only </OriginProtocolPolicy > </CustomOrigin > <CallerReference > your unique caller reference </CallerReference > <CNAME > mysite.example.com </CNAME > <Comment > My comments </Comment > <Enabled > true </Enabled > <TrustedSigners > <Self /> </TrustedSigners > <Logging > <Bucket > mylogs.s3.amazonaws.com </Bucket > <Prefix > myprefix/ </Prefix > </Logging > </DistributionConfig >
<?xml version = "1.0" encoding = "UTF-8" ?> <DistributionConfig xmlns = "http://cloudfront.amazonaws.com/doc/2010-11-01/" > <CustomOrigin > <DNSName > www.example.com </DNSName > <HTTPPort > 80 </HTTPPort > <OriginProtocolPolicy > http-only </OriginProtocolPolicy > </CustomOrigin > <CallerReference > your unique caller reference </CallerReference > <CNAME > mysite.example.com </CNAME > <Comment > My comments </Comment > <Enabled > true </Enabled > <TrustedSigners > <Self /> </TrustedSigners > <Logging > <Bucket > mylogs.s3.amazonaws.com </Bucket > <Prefix > myprefix/ </Prefix > </Logging > </DistributionConfig >
<?xml version = "1.0" encoding = "UTF-8" ?> <DistributionConfig xmlns = "http://cloudfront.amazonaws.com/doc/2010-11-01/" > <CustomOrigin > <DNSName > www.example.com </DNSName > <HTTPPort > 80 </HTTPPort > <OriginProtocolPolicy > http-only </OriginProtocolPolicy > </CustomOrigin > <CallerReference > your unique caller reference </CallerReference > <CNAME > mysite.example.com </CNAME > <Comment > My comments </Comment > <Enabled > true </Enabled > <TrustedSigners > <Self /> </TrustedSigners > <Logging > <Bucket > mylogs.s3.amazonaws.com </Bucket > <Prefix > myprefix/ </Prefix > </Logging > </DistributionConfig >
- Order Deny , Allow
- Deny from all
- # Amazon CloudFront
- Allow from 216.137.60.0/ 23
- origin.example.com/images/image_1.jpg
- example_sub_domain.cloudfront.net/images/image_1.jpg
- function getSignedUrl ( $ url )
- {
- // Prepare expire date
- $ expireDate = time ( ) + SECURE_URL_TIMEOUT ;
- // Read Cloudfront Private Key Pair
- $ fp = fopen ( CLOUD_FRONT_KEY_PAIR_PATH , "r" ) ;
- $ privateKey = fread ( $ fp , 8192 ) ;
- fclose ( $ fp ) ;
- // Create the private key
- $ privateKey = openssl_get_privatekey ( $ privateKey ) ;
- if ( ! $ privateKey ) {
- return false ;
- }
- // Prepare json policy
- $ json = '{"Statement": [{"Resource": "' . $ url . '", "Condition": {"DateLessThan": {"AWS: EpochTime":' . $ expireDate . '}}}]} " ;
- // Sign the policy with the private key
- if ( ! openssl_sign ( $ json , $ signature , $ privateKey , OPENSSL_ALGO_SHA1 ) ) {
- return false ;
- }
- // Create url safe signed policy
- $ signature = str_replace ( array ( '+' , '=' , '/' ) , array ( '-' , '_' , '~' ) , base64_encode ( $ signature ) ;
- // Construct the URL
- return $ url
- . '? Expires =' . $ expireDate
- . '& Signature =' . $ signature
- . '& Key-Pair-Id =' . CLOUD_FRONT_KEY_PAIR_ID ;
- }
Source: https://habr.com/ru/post/115911/
All Articles