Showing posts with label System. Show all posts
Showing posts with label System. Show all posts

Saturday, December 5, 2015

Free SSL cho Google App Engine

Let’s Encrypt (https://letsencrypt.org/) cung cấp một công cụ để mọi người có thể tạo SSL Certificate hoàn toàn miễn phí. Còn Google App Engine lại cung cấp một dạng hosting miễn phí cho các ứng dụng. Kết hợp lại chúng ta sẽ có một server hỗ trợ SSL.

Bài này hướng dẫn vài bước đơn giản để đưa SSL vào domain của bạn trên AppEngine.

Note: bạn phải sử dụng máy Mac hoặc Linux để chạy command line.

Trước hết, download client tool

git clone https://github.com/letsencrypt/letsencrypt
cd letsencrypt

Tạo free certificate

sudo ./letsencrypt-auto -a manual certonly

Lúc này, nó sẽ yêu cầu bạn xác nhận domain bằng một thông báo đại loại thế này:

Make sure your web server displays the following content at 
http://www.example.com/.well-known/acme-challenge/{challenge 1} before continuing:
{response 1}
Content-Type header MUST be set to text/plain.
...
Press ENTER to continue

Bạn cần phải đưa vài dòng source code lên server AppEngine của mình. Lưu ý là không nhấn [ENTER] trước khi bạn đưa những dòng code xử lý request lên server của mình.

Đây là mẫu viết bằng Python, và bạn cần copy {challenge} và {response} vào đúng chỗ, để nó có thể xác nhận chính xác:

class LetsEncryptHandler(RequestHandler):

    def get(self, challenge):
        self.response.headers['Content-Type'] = 'text/plain'
        responses = {
                    '{challenge 1}': '{response 1}'
                    '{challenge 2}': '{response 2}'
                }
        self.response.write(responses.get(challenge, ''))

application = WSGIApplication([
    ('/.well-known/acme-challenge/([\w-]+)', LetsEncryptHandler),
])

Tiếp theo là trở lại command line và nhấn [ENTER]. Kết quả là bạn đã có certificate, nhưng nếu bạn mở file private key ra sẽ thấy dòng này -----BEGIN PRIVATE KEY-----. Và chia buồn với bạn là Google App Engine không support SSL theo phương thức này.

Bạn cần phải đổi sang RSA, với câu lệnh:

sudo openssl rsa -in /etc/letsencrypt/live/www.example.com/privkey.pem | less

Giờ thì bạn chỉ cần copy, và vào App Engine > Settings > SSL Certificates, tạo một Certificate và dán private key và public key (file /etc/letsencrypt/live/www.example.com/fullchain.pem) tương ứng vào.

Nhớ đặt cái tên để còn biết. Hihi.

Tuesday, September 17, 2013

TLDR: Bạn đã từng nghe về EventSource?

EventSource (xem ở đây: http://www.w3.org/TR/eventsource/) là dạng phương thức gửi message từ server xuống client, mà server là người chủ động. Ngược hoàn toàn với HTTP Request thông thường, khi client chủ động gửi request lên server và server response. Nó được sinh ra để giúp server có thể gửi message xuống client để làm gì đó như là notification, tin mới,... theo cách cực kỳ realtime.

Nó còn có tên gọi khác là Server-Sent Events.


Wednesday, July 24, 2013

Các nguyên lý thiết kế hệ thống web

Web là gì? Có rất nhiều định nghĩa trên thế giới, nhưng ở đây tôi chỉ muốn đề cập tới một khía cạnh: Hệ thống web được sử dụng để phục vụ hàng nghìn đến hàng triệu user đồng thời. Và bài viết này đề cập tới vấn đề các nguyên lý khi thiết kế hệ thống web với nhiều server.

Giống như những thứ khác trong cuộc sống, việc đầu tiên bạn làm là dành thời gian để lên kế hoạch cho dịch vụ của bạn, cân nhắc những thứ bạn sẽ đạt được và những thứ đánh đổi. Một hệ thống được thiết kế lúc đầu chắc chắn sẽ phải chạy một thời gian dài, và việc thay đổi sang một cách thiết kế khác thường kéo theo rất nhiều chi phí (lớn hơn nhiều so với việc đập bỏ và xây dựng lại). Một lưu ý nữa về tầm quan trọng của giai đoạn này đó là thiết kế của bạn sẽ ảnh hưởng trực tiếp hoặc gián tiếp tới quy trình làm việc, công sức của các dev, và việc "sống chết" của dịch vụ của bạn.

Ảnh minh hoạ

Biểu mẫu liên hệ

Name

Email *

Message *